java中有按字节读取的InputStream和按字符读取的Reader,那有没有按比特bit读取的?

网友解答: 这个肯定是有的。电脑上所有的数据其实都是用字节(byte)来表示的,字节是所有数据的基础,读取字节是io中最基本的一个功能。java中inputstream就是可以直接读取字

网友解答:

这个肯定是有的。电脑上所有的数据其实都是用字节(byte)来表示的,字节是所有数据的基础,读取字节是io中最基本的一个功能。java中inputstream就是可以直接读取字节的。inputstream中read()方法就是读取读取单个字节的,而read(byte[])是读取一个字节数组的。

java的io组成如下

由上图可见inputstream是输入流的一个基类,java中是不能直接创建一个基类的,所以要获取一个inputstream只能生成一个具体的实现类,例如fileinputstream(文件输入流)。java io中采用了装饰器模式(体现在类的构建器上),通过装饰器可以使装饰类增加额外的功能。例如你想按一个int或者long来读取数据,那你可以使用datainputstream来读取,用一个inputstream来构建一个datainputstream中就可以了。

网友解答:

JAVA的IO流读取可以分为两种流读取:

1、字节流:可以用于读写二进制文件及任何类型文件

2、字符流:可以用于读写文本文件,不能操作二进制文件

其中字节流就是以字节读取的。

字节流和字符流的区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

标签: