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

来源:2-2 Java 中的 URL 的应用

SoyaDokio

2016-06-28 00:14

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

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

我想知道为什么?


写回答 关注

5回答

  • 心and心
    2016-07-25 13:29:10
    已采纳

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

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

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

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

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

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

    具体可以看io部分的视频

    SoyaDo...

    非常感谢!

    2016-08-04 18:08:49

    共 1 条回复 >

  • 慕粉3419984
    2016-08-16 16:58:35
    12132


  • 染红_街道
    2016-07-09 15:48:22

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

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

    纯属个人理解

  • 慕粉Coder
    2016-06-28 11:02:56

    为了提高性能

    SoyaDo...

    亲,请仔细看我的问题。

    2016-06-28 19:37:43

    共 1 条回复 >

  • 慕婉清8869734
    2016-06-28 10:55:14

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

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

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

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

    SoyaDo...

    亲,如果能随便百度、Google到,我是不会提出来麻烦大家的。

    2016-07-02 13:46:00

    共 1 条回复 >

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题