缓冲流
字节缓冲流
原理:底层自带了长度为8192的缓冲区提高性能

字符缓冲流
原理:底层自带了长度为8192的缓冲区提高性能
构造方法:

特有方法
- BufferedReader:
public String readLine(): 读一行文字。 - BufferedWriter:
public void newLine(): 写一行行分隔符,由系统属性定义符号。
转换流
InputStreamReader字符转换输入流
构造方法
InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。
OutputStreamWriter字符转换输出流
构造方法
OutputStreamWriter(OutputStream in): 创建一个使用默认字符集的字符流。OutputStreamWriter(OutputStream in, String charsetName): 创建一个指定字符集的字符流。
转换流的作用
指定字符集读写数据(JDK11之后已淘汰)
字节流要使用字符流中的方法时
序列化
序列化流/对象操作输出流
可以把Java中的对象写到本地文件中
构造方法
public ObjectOutputStream(OutputStream out): 创建一个指定OutputStream的ObjectOutputStream。把基本流包装成高级流。
成员方法
public final void writeObject (Object obj): 将指定的对象写出。把对象序列化(写出)到文件中去。
反序列化流/对象操作输入流
构造方法

成员方法

细节汇总
①使用序列化流将对象写到文件时,需要让Javabean类实现Serializable接口,否则会出现会出现NotSerializableException异常
②序列化流写到文件中的数据时不能修改的,一旦修改就无法再次改回来
③系列化对象后,修改了Javabean类,再次反序列化会抛出InvaildClassException异常。解决方案:给Javabean类添加serialVersionUID(序列号、版本号)
④如果一个对象中的某个成员变量的值不想被序列化,则给该成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程
打印流
特点:
1.打印流只操作文件目的地,不操作数据源
2.特有的写出方法可以实现,数据原样写出
3.特有的写出方法,可以实现自动刷新,自动换行
字节打印流
字节流底层无缓冲区
构造方法

成员方法

字符打印流
字符流底层有缓冲区,想自动刷新需要开启
构造方法

成员方法

解压缩流/压缩流
解压缩流:负责把压缩包中的文件和文件夹解压出来
解压本质:把每一个ZipEntry按照层级拷贝到本地另一个文件夹中
压缩流:负责压缩文件或者文件夹
压缩本质:把每一个(文件/文件夹)看成ZipEntry对象放到压缩包中
Commons-io
Commons是apache开源基金组织提供的工具包,里面有很多帮助我们提高开发效率的API
比如:
StringUtils 字符串工具类
NumberUtils 数字工具类
ArrayUtils 数组工具类
RandomUtils 随机数工具类
DateUtils 日期工具类
StopWatch 秒表工具类
ClassUtils 反射工具类
SystemUtils 系统工具类
MapUtils 集合工具类
Beanutils bean工具类
Commons-io io的工具类
等等...
其中:Commons-io是apache开源基金组织提供的一组有关IO操作的开源工具包。
作用:提高IO流的开发效率
使用方式:
1.新建lib文件夹
2.把第三方jar包粘贴到文件夹中
3.右键点击add as a library
4.在类中打包使用


java
public class CommonsIODemo1 {
public static void main(String[] args) throws IOException {
/* File src = new File("myio\\a.txt");
File dest = new File("myio\\copy.txt");
FileUtils.copyFile(src,dest);*/
/*File src = new File("D:\\aaa");
File dest = new File("D:\\bbb");
FileUtils.copyDirectoryToDirectory(src,dest);*/
/*File src = new File("D:\\bbb");
FileUtils.cleanDirectory(src);*/
}
}
Hutool工具包

java
public class Test1 {
public static void main(String[] args) {
/* File file1 = FileUtil.file("D:\\", "aaa", "bbb", "a.txt");
System.out.println(file1);//D:\aaa\bbb\a.txt
File touch = FileUtil.touch(file1);
System.out.println(touch);
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
File file2 = FileUtil.writeLines(list, "D:\\a.txt", "UTF-8");
System.out.println(file2);*/
/* ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
File file3 = FileUtil.appendLines(list, "D:\\a.txt", "UTF-8");
System.out.println(file3);*/
List<String> list = FileUtil.readLines("D:\\a.txt", "UTF-8");
System.out.println(list);
}
}