为了账号安全,请及时绑定邮箱和手机立即绑定

为何要将字节输入流转换为字符输入流?

讲师在章节2-2中12:00时提到:要将字节输入流转为字符输入流。

我认为上面的URL的实例应该是以实例的二进制方式存储的吧,那为何不优先选择字节流,尤其是获取的元流就是字节流的情况下。

我想知道为什么?


正在回答

5 回答

读取数据有很多种方法,各有各的特点

比如说字节流中,InputStream是最基本的,FileInputStream用来读取文件,DataInputStream适用于读取各种类型的数据,BufferedInputStream加缓冲可以提高IO性能

字符流中也有相应的类,InputStreamReader,FileReader,BufferedReader

其中BufferedReader有一个方法readLine(),可以一行一行读取,这个方法其他的都没有,使用起来比较方便

再看它的构造方法,需要传入Reader类型的参数,那么就必须再它前面new一个InputStreamReader,所以需要把字节流转换成字符流

果不转换也可以,直接使用InputStream或者BufferedInputStream,一个字节一个字节读,或定义数组一些字节一些字节一起读,都可以,只不过没有一行一行读方便

具体可以看io部分的视频

5 回复 有任何疑惑可以回复我~
#1

SoyaDokio 提问者

非常感谢!
2016-08-04 回复 有任何疑惑可以回复我~
12132


0 回复 有任何疑惑可以回复我~

感觉没什么太大区别,字符流每次读取一行字符和字节流带缓冲的每次读取指定字节都可以,不过前者可用于字符比较筛选什么的,如果只是单纯的读写哪种都一样我感觉

            InputStream is = url.openStream();
            BufferedInputStream in = new BufferedInputStream(is);

纯属个人理解

0 回复 有任何疑惑可以回复我~

为了提高性能

0 回复 有任何疑惑可以回复我~
#1

SoyaDokio 提问者

亲,请仔细看我的问题。
2016-06-28 回复 有任何疑惑可以回复我~

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.  

所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.  

字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。 

简单的说,假如一个一个字节的往文件里输入,一个文件读写次数太大了,很毁硬盘,但如果一个一个字符的保存,硬盘读写次数就会少很多,甚至可以一行一行的保存。

0 回复 有任何疑惑可以回复我~
#1

SoyaDokio 提问者

亲,如果能随便百度、Google到,我是不会提出来麻烦大家的。
2016-07-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为何要将字节输入流转换为字符输入流?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信