为何要将字节输入流转换为字符输入流?
讲师在章节2-2中12:00时提到:要将字节输入流转为字符输入流。
我认为上面的URL的实例应该是以实例的二进制方式存储的吧,那为何不优先选择字节流,尤其是获取的元流就是字节流的情况下。
我想知道为什么?
讲师在章节2-2中12:00时提到:要将字节输入流转为字符输入流。
我认为上面的URL的实例应该是以实例的二进制方式存储的吧,那为何不优先选择字节流,尤其是获取的元流就是字节流的情况下。
我想知道为什么?
2016-06-28
读取数据有很多种方法,各有各的特点
比如说字节流中,InputStream是最基本的,FileInputStream用来读取文件,DataInputStream适用于读取各种类型的数据,BufferedInputStream加缓冲可以提高IO性能
字符流中也有相应的类,InputStreamReader,FileReader,BufferedReader
其中BufferedReader有一个方法readLine(),可以一行一行读取,这个方法其他的都没有,使用起来比较方便
再看它的构造方法,需要传入Reader类型的参数,那么就必须再它前面new一个InputStreamReader,所以需要把字节流转换成字符流
如果不转换也可以,直接使用InputStream或者BufferedInputStream,一个字节一个字节读,或定义数组一些字节一些字节一起读,都可以,只不过没有一行一行读方便
具体可以看io部分的视频
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
简单的说,假如一个一个字节的往文件里输入,一个文件读写次数太大了,很毁硬盘,但如果一个一个字符的保存,硬盘读写次数就会少很多,甚至可以一行一行的保存。
举报