字节流
Java的I/O是以流为基础的,而字节流是所有流的基础,是I/O中的最原始的方式(计算机处理数据是以byte为基本单位的)。
Java中的基础字节输入流、输出流为:InputStream,OutputStream,然后基础输入输出流派生出FileInputStream,FileOutputStream,ObjectInputStream,ObjectOutputstream,BufferedInputStream(由类FilterInputStream类派生出,FilterInputStream由InputStream派生出),BufferedOutputStream.
字节流主要应用在最原始的流的处理上,比如内存缓存操作,文件复制等不需要关心流的内容的格式的地方,字节流可以应付几乎所有的流的处理,但是在处理具体数据格式的时候,效率没有具体的实现类高。
字符流
字符流是针对文本文件提出的概念。字符流是由字节流包装而来的,字符流的输入输出流类型包括StrinigReader和StringWriter,BufferedReader和BufferedWriter,后者提供readLine()方法。
字符流在创建的时候需要提供一个InputStreamReader或者InoutStreamWriter对象。对于特定字符格式的文本内容,在创建InputStreamReader或者InoutStreamWriter对象的时候,应提供字符格式类型作为构造方法的参数。
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("path"), "GBK"));
} catch (FileNotFoundException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}