IO的分类
根据数据的流向分为:输入流和输出流。
- 输入流 :把数据从
其他设备
上读取到内存
中的流。 - 输出流 :把数据从
内存
中写出到其他设备
上的流。
格局数据的类型分为:字节流和字符流。
- 字节流 :以字节为单位,读写数据的流。
- 字符流 :以字符为单位,读写数据的流。
InputStream
OutputStream
Reader
Writer
缓冲流
缓冲流,也叫高效流,是对4个基本的FileXxx
流的增强,所以也是4个流,按照数据类型分类:
- 字节缓冲流:
BufferedInputStream
,BufferedOutputStream
- 字符缓冲流:
BufferedReader
,BufferedWriter
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
File 类
// 创建文件对象
File f1 = new File("D:\\workspace\\w20210621_19");
// 获取全路径
System.out.println(f1.getAbsolutePath());
// 获取文件名 / 文件夹名,包括后缀
System.out.println(f1.getName());
// 判断是否存在
System.out.println(f1.exists());
// 判断是否是文件
System.out.println(f1.isFile());
// 判断是否是目录
System.out.println(f1.isDirectory());
// 上级路径
System.out.println(f1.getParent());
// 上级对象
System.out.println(f1.getParentFile());
// 获取所有子文件对象
File[] subFiles = f1.listFiles();
for (File file : subFiles) {
System.out.println(file.getAbsolutePath());
}
// !!!删除 示例数据即可,要么删了就找不回来了
File f2 = new File("D:/a.java");
// 判断是否存在
System.out.println(f2.exists());
// 新建文件,不能新建文件夹,如果有就不创建,创建返回true,不创建返回false
System.out.println(f2.createNewFile());
// 删除成功返回true,否则返回false
System.out.println(f2.delete());
// 文件夹创建和删除
File f3 = new File("D:/com/zrz/");
System.out.println(f3.exists());
// 只能创建zrz 不能创建com,
// f3.mkdir();
// 递归创建整个目录
f3.mkdirs();
// 删除,只会删除zrz文件夹,因为f3是zrz的文件夹对象,所以不会删除com
f3.delete();