字节流与字符流的区别
现在通过一系列的分析已经可以清楚字节流与字符流的基本操作了,但是对于这两类依然是存在有区别的,重点来分析一下输出的处理操作。在使用OutputStream和Writer输出的最后发现都使用了close()方法进行了关闭处理。
在使用OutputStream类输出的时候如果现在没有使用close()方法关闭输出流发现内容依然可以实现正常输出,但是如果在使用Writer的时候没有使用close()方法关闭输出流,那么这个时候内容将无法进行输出,因为Writer使用到了缓冲区,当使用了close()方法的时候实际上会出现有强制刷新缓冲区的情况,所以这个时候会将内容进行输出,如果没有关闭,那么将无法进行输出操作,所以此时如果在不关闭的情况下要想将全部的内容输出可以使用flush()方法强制清空。
范例:使用Writer并强制性清空
package cn.mldn.demo;
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\r\n";
out.write(str);
out.flush(); // 强制性刷新
}
}
字节流在进行处理的时候并不会使用到缓冲区,而字符流会使用到缓冲区。另外使用缓冲区的字符流更加适合于进行中文数据的处理,所以在日后的程序开发之中,如果要涉及到包含有中文信息的输出一般都会使用字符流处理,但是从咖外一方面来讲,字节流和字符流的基本处理形式是相似的,由于IO很多情况下都是进行数据的传输使用(二进制)所以本次的讲解将以字节流为主。