搜索

首页  >  问答  >  正文

android - java中字节流读写和字符流读写怎么理解?哪个效率更高

高洛峰高洛峰2803 天前814

全部回复(3)我来回复

  • 阿神

    阿神2017-04-17 16:45:03

    所有的IO操作都是通过字节完成的,系统底层不存在字符这个概念,Java中 InputStream 和 OutputStream 中只有字节操作方法,没有字符串方法。所有的可以进行字符串读写的流封装对象,都是上层实现,方便使用而已。

    具体选择那种流来使用,他们之间效率如何,都要看具体场景和功能实现的目的,没有单纯的好坏。

    以你上面的两个例子,效果完全是一样的,只不过你选择使用 BufferedWriter 和 BufferedReader 的内部实现还是字节实现 Buffer 缓冲而已。

    Java 是开源的,建议多看源码,熟悉内部原理和实现。

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:45:03

    两者的区别就是:字节流可以既可以操作文本文件,也可以操作非文本文件,如一些二进制数据(图片,视频,对象),而字符流只能操作文本。这也是两者的适用情况,如何决定该使用哪种数据流读写取决于要读写的数据类型,若是文本本件,当然选择字符流,因为我们都知道字符流每次处理的单元为2个字节的Unicode字符,而字节流每次处理的是一个,若是非文本文件,那么就只能用字节流了,这个时候就不能单纯的看谁的效率高了。我想这也是为什么要有两者数据流的原因吧。

    回复
    0
  • 迷茫

    迷茫2017-04-17 16:45:03

    对小文件读写,几乎无差异。
    对大文件读写,Buffer比较好些。对于多次读写硬盘,好的缓存机制能快些。比方说60GB文件,你肯定分批(甚至分行),多次读写。
    其次,你想处理字符,还是字节,根据需要选择。

    回复
    0
  • 取消回复