一双慧眼识别字节/字符流区别 | 带你学《Java语言高级特性》之五十七

上一篇:掌握字符输入流:Reader | 带你学《Java语言高级特性》之五十六
Java文件IO操作中常用的流处理类的基本信息和相关操作我们已经全部了解过,现在让我们来通过输出操作的复习总结概况字节流和字符流之间的区别吧。

【本节目标】
通过阅读本节内容,你将了解到OutputStream和Writer之间的不同,认识到输出过程中的缓冲区的存在,并能够通过对缓冲取得一些操作实现一些需求,深刻理解字符流和字节流适用于不同的使用场景。

字节流与字符流的区别

现在通过一系列的分析已经可以清楚字节流与字符流的基本操作了,但是对于这两类流依然是存在有区别的,重点来分析一下输出的处理操作。在使用OutputStream和Writer输出的最后都使用了close()方法进行了关闭处理。

在使用OutputStream类输出的时候,如果没有使用close()方法关闭输出流会发现内容依然可以实现正常的输出;但是如果在使用Writer的时候没有使用close()方法关闭输出流,那么这个时候内容将无法进行输出,因为Writer使用到了缓冲区,当使用close()方法的时候实际上会出现有强制刷新缓冲区的情况,所以这个时候会将内容进行输出,如果没有关闭,那么将无法进行输出操作,所以此时如果在不关闭的情况下想将全部的内容进行输出可以使用flush()方法强制性清空。

范例:使用Writer并强制性清空

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        File file = new File("D:"+ File.separator + "hello" + File.separator + "mldn.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();  //父目录必须存在
        }
        Writer out = new FileWriter(file);
        String str = "www.mldn.cn";
        out.write(str);
        out.flush();//强制性刷新    www.mldn.cn
    }
}

字节流在进行处理的时候并不会使用到缓冲区,而字符流会使用到缓冲区,另外使用缓冲区的字符流更加适合进行中文数据的处理,所以在日后的开发中如果要涉及到包含有中文信息的输出,一般都会使用字符流进行处理,但是从另外一方面来讲,字节流和字符流的基本处理形式是相似的,由于IO很多情况下都是进行数据的传输使用(二进制),所以我们的重点将以字节流为主。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:借助转换流打通字节/字符流的关联 | 带你学《Java语言高级特性》之五十八
更多Java面向对象编程文章查看此处

上一篇:实时OLAP分析利器Druid介绍


下一篇:兆易创新通过并购完善存储器业务版图