IO流的基础知识点梳理
一.File类
1.概述
把文件和目录路径名的抽象表示形式(把文件系统中的字符串路径封装成为java对象)
2.创建对象(三种创建形式)
public static void main(String[] args) {
/**
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
*/
//方式一:创建file对象,引用指向D:\Files\JavaFiles\Java2302位置
File file01 = new File("D:\\Files\\JavaFiles\\Java2302");
System.out.println(file01);
// 方式二:在指定父目录中再次创建子目录
String pathParent = "D:\\Files\\JavaFiles\\Java2302";
File file02 = new File(pathParent, "Day18");
System.out.println(file02);
File file03 = new File(file01, "Day19");
System.out.println(file03);
File file04 = new File("D:\\work\\Code\\Java\\Java2302\\Day19\\hello.txt");
System.out.println(file04);
// 方式三:使用相对路径创建file对象
File file05 = new File("hello.txt");
System.out.println(file05);
System.out.println(file05.getAbsolutePath());
}
3.常用的方法
增
boolean mkdir()
创建此抽象路径名指定的目录。
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
删
boolean delete()
删除此抽象路径名表示的文件或目录。
void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
改
boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。
// 创建File对象,路径指向D:\Files\JavaFiles\Java2302
File file = new File("D:\\Files\\JavaFiles\\Java2302");
// 创建文件夹
File file2 = new File(file, "Day22");
System.out.println(file2.exists()); // 判定路径是否存在
// 创建目录
file2.mkdir();
File file3 = new File(file, "Day23\\笔记");
file3.mkdirs();
// 创建文件
File file4 = new File(file, "Day24\\资料\\hehe.txt");
file4.createNewFile();
// file4.delete();
// 如果文件夹中存在内容,不能直接删除
File file5 = new File(file, "Day24\\资料\\bb");
file5.delete();
for (int i = 0; i < 10; i++) {
System.out.println("倒计时:" + (10-i));
Thread.sleep(1000);
}
// 退出时候删除
File file6 = new File(file, "Day24\\资料\\hehe.txt");
file6.deleteOnExit();
System.out.println("删除成功");
}
查询数据
// 创建File对象,路径指向D:\Files\JavaFiles\Java2302
File file = new File("D:\\Files\\JavaFiles\\Java2302");
System.out.println(file.exists());
// 判定是否绝对路径
System.out.println(file.isAbsolute());
File file2 = new File("hello.txt");
System.out.println(file2.isAbsolute());
// 判定是文件还是文件夹
System.out.println(file.isDirectory());
System.out.println(file.isFile());
File file3 = new File(file, "hihi.txt");
System.out.println(file3.exists());
System.out.println(file3.isHidden());
System.out.println(file3.length());
System.out.println(file3.lastModified());
Date date = new Date(1678330557123L);
System.out.println(date);
// 获取文件和文件夹
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f);
}
}
四.递归获取所有的文件夹和文件目录
/**
* 查看所有文件
* @param file
*/
public static void lookFiles(File file) {
// 获取file对象中的所有文件和文件夹
File[] files = file.listFiles();
// 遍历获取到的所有内容
for (File f : files) {
// 判定f是文件还是文件夹
if (f.isFile()) {
// 文件,直接输出
System.out.println("\t文件"+f);
} else {
// 输出文件夹
System.out.println("文件夹:" + f);
// 文件夹,再次调用方法读取内容
lookFiles(f);
}
}
}
测试类
public static void main(String[] args) {
/**
* 获取指定目录中所有的文件和文件夹【包括子级】
*/
File file = new File("D:\\Files\\JavaFiles\\Java2302");
lookFiles(file);
}