第1章 转换流
展示注释:看到Stream在最后面就是字节类(以后再说)
1.1 OutputStreamWriter类
写入的时候用的到flush,写出的时候用不着
1.2 InputStreamReader类
用转换流进行复制
首先我们要明白,程序里的和所展示的是不一样的,展示出来的txt是已经编译好的
我们要转换一个不是UTF8的文件,所以用1来确定文件的路径来,然后再用学的转换流2来进行程序内进行编译转换,将字节转换成字符输出到程序里面,选择fis,UTF8编译,。
开始3的流程,明确要复制输出的地点,4创建输出的转换流,fos,UTF8编译,再把12得到的东西又字符转换成字节输出出去,这样即便是不同编码的文件也能复制了。
简单说就是将GDK字符以UTF8输入至程序里,然后程序再以UTF8转出复制的文件。
总结:
字节--->字符 : 看不懂的--->看的懂的。 需要读。输入流。 InputStreamReader
字符--->字节 : 看的懂的--->看不懂的。 需要写。输出流。 OutputStreamWriter
1.3 转换流和子类区别
发现有如下继承关系:
OutputStreamWriter: utf-8 gbk
|--FileWriter: gbk
InputStreamReader:
|--FileReader;
字符流是转换流的子类,只能gbk,连着调用方式可以看情况,如果只是复制gbk可以用身为子类的字节流。
第2章 缓冲流
2.1 字节缓冲流
l 写入数据到流中,字节缓冲输出流 BufferedOutputStream
l 读取流中的数据,字节缓冲输入流 BufferedInputStream
2.1.1 字节缓冲输出流BufferedOutputStream
2.1.1 字节缓冲输入流 BufferedInputStream
2.2 用字节缓冲流复制文件
其实就是把字节流套入缓冲流里面,因为是缓冲流调用的字节流,所以关闭的时候只要关闭缓冲流就行,缓冲流会自己关闭字节流的。因为缓冲流需要套字节流,所以缓冲流是依靠字节流的。
2.3 字符缓冲流
l 读取流中的数据,字符缓冲输入流 BufferedReader
l 独有方法
public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。一行一行的输入
l 写入数据到流中,字符缓冲输出流 BufferedWriter
l 独有方法:
void newLine() 根据当前的系统,写入一个换行符
2.3.1 字符缓冲输出流 BufferedWriter
2.3.2 字符缓冲输入流 BufferedReader
一行一行
Null和-1一样
字符缓冲流一行一行的复制,用到了换行
第3章 IO流大体分类