File练习题

FILE类练习题

创建文件

在D盘的test文件夹下创建一个test.txt文件

//1.创建File对象
File file = new File("D:\\test");
//如果test文件夹不存在就创建
if (!file.isDirectory()) {
file.mkdirs();
}
//2.拼接路径
File Filepath = new File(file, "test.txt");
//3.创建文件
boolean b = Filepath.createNewFile();
//4.判断文件是否创建成功
if (b) {
System.out.println("文件创建成功");
} else {
System.out.println("文件创建失败");
}

查找文件

查找一个文件夹里是否有txt文件

/**
* 查找并打印指定目录下(仅一级)的所有.txt文件
*
* 注意:该方法只检查当前目录下的直接文件,不会递归检查子目录
*/
public static void findTxtFilesInCurrentDir() {
// 1. 创建File对象,指向目标目录
File dir = new File("文件夹路径"); // 请替换为实际路径

// 2. 获取该目录下的直接子文件和子目录(仅一级)
File[] files = dir.listFiles();

// 3. 遍历目录内容
if (files != null) {
for (File file : files) {
// 检查是否是文件且扩展名为.txt
if (file.isFile() && file.getName().toLowerCase().endsWith(".txt")) {
System.out.println("找到txt文件: " + file.getAbsolutePath());
}
}
} else {
System.out.println("目录不存在或无法访问");
}
}

遍历整个文件夹查找所有txt文件


/**
* 递归查找并打印指定目录及其子目录下所有的.txt文件
*
* @param src 要搜索的起始目录(File对象)
*/
public static void findAll(File src) {
// 获取目录下的所有文件和子目录
File[] files = src.listFiles();

// 检查目录是否为空
if (files != null) {
// 遍历目录下的每个文件/子目录
for (File file : files) {
if (file.isFile()) {
// 如果是文件,检查是否是.txt文件
String fileName = file.getName();
if (fileName.endsWith(".txt")) {
// 打印.txt文件的绝对路径
System.out.println(file.getAbsolutePath());
}
} else {
// 如果是目录,递归搜索
findAll(file);
}
}
}
}

image-20250527114553005

删除文件

删除一个多级文件夹

/**
* 递归删除指定目录及其所有子目录和文件
*
* @param src 要删除的目录(File对象)
*/
public static void deleteAll(File src) {
// 获取目录下的所有文件和子目录
File[] files = src.listFiles();

// 非空目录处理
if (files != null) {
// 遍历目录下的每个文件/子目录
for (File file : files) {
if (file.isFile()) {
// 如果是文件,直接删除
file.delete();
} else {
// 如果是目录,递归删除子目录
deleteAll(file);
}
}
}

// 最后删除当前空目录(或文件)
src.delete();
}

统计文件

统计一个文件夹下所有文件的大小

/**
* 计算指定目录及其子目录下所有文件的总大小(字节数)
*
* @param src 要计算大小的源目录(File对象)
* @return 返回目录下所有文件的总字节数
*/
public static long findAllSize(File src) {
long len = 0; // 初始化总字节数为0

// 获取目录下的所有文件和子目录
File[] files = src.listFiles();

// 遍历目录下的每个文件/子目录
for (File file : files) {
if (file.isFile()) {
// 如果是文件,直接累加文件大小
len += file.length();
} else {
// 如果是目录,递归计算子目录大小并累加
len += findAllSize(file);
}
}

return len; // 返回总字节数
}