i/o流体系
流编程三要素:数据源,目的地,交通工具
字节输出流
OutputStream 此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。
注意事项
追加写入利用FileOutputStream的带boolean append参数的构造器
notepad不能够识别/n这个换行符但是一般的编辑器可以,原因是notepad是Windows自带
Windows \r\n // ***存储会占两个字节
Linux \n
Mac \r
字节流处理换行符字符不方便,后期会有字符流
IO编程需要加入异常处理,并且需要在finally中释放资源
字节输入流
此抽象类是表示字节输入流的所有类的超类
注意事项
如果输入流文件不存在,会抛出异常
read()方法的特点
a.文件每次读取一个字节,读取一个字节之后会自动将文件指针向后移动一个字节单位
b.文件读取后返回的实际读取的字节内容
c.读取到文件末尾返回-1
文件字节流FileInputStream和FileOutputStream
该流是用来处理数据源或者目的地是文件的情况,可以通过该对流实现文件的拷贝
高效缓冲字节流 BufferedInputStream和BufferedOutputStream
该流用于提高字节流的读写效率,底层还是使用缓存字节数组的概念
转换流InputStreamReader和OutputStreamWriter
特点
该流可以具备字符流的功能
该流可以将字节流转换成字符流
该流可以处理编码解码问题
文件字符流FileReader和FileWrter
该流和文件字节字节流类似,只不过该对流是用了处理字符文本文件的
高效字符流 BufferedReader和BufferedWriter
概述
该流用于提高字符流的读写效率,底层还是使用缓存字符数组的概念。
特点
具备字符流读写功能
具体写换行符,适配不同的操作系统 newLine()
能够读一行readLine()
能够提高字符流的效率
FileReader fr = new FileReader("xxx\\fr.txt");
char[] chs = new char[5];
int len = 0;
while ((len = fr.read(chs)) != -1) {
System.out.println(len);//数组里存的字符个数,一般等于数组长度,除非后面没有字符,换行符\r\n也算
System.out.println(chs);// fr.read(chs):将文件里的字符缓存进数组,一般存满
System.out.println(new String(chs, 0, len));//将数组里的字符转换为字符串输出
复制多级文件夹
public