# 2026-08-06 File 文件操作类练习(课堂练习用) > **说明**:练习今日新学知识点——**文件操作类 `java.io.File`** 的常用操作:创建(`mkdir` / `mkdirs` / `createNewFile`)、删除(`delete`)、判断(`isFile` / `isDirectory` / `exists`)、获取(`getName` / `getPath` / `getAbsolutePath` / `listFiles`)与 `IOException` 处理。 --- ## 练习:文件管理器(File 常用操作) **难度**:⭐⭐⭐ **知识点**:`new File(String)` 构造方法、`mkdir` / `mkdirs`、`createNewFile`、`delete`、`isFile` / `isDirectory` / `exists`、`getName` / `getPath` / `getAbsolutePath` / `listFiles`、`IOException` **场景描述**:用 File 类封装一个路径名,再通过方法把它变成真实的文件/文件夹。写一个简单的「文件管理器」,用**最常用的构造方法 `new File("路径字符串")`** 创建对象,完成下面的常用操作。 ### 代码框架 ```java import java.io.File; import java.io.IOException; public class FileManager { public static void main(String[] args) throws IOException { // 最常用的构造方法:直接把路径字符串封装成 File 对象 File dir = new File("./"); // 当前项目目录 File folder = new File("myDir"); // 要创建的文件夹 File file = new File("hello.txt"); // 要创建的文件 // TODO 1: 创建文件夹——folder.mkdir() 单级创建; // 多级用 new File("a/b/c").mkdirs()(父目录不存在也会创建) // TODO 2: 创建文件——file.createNewFile(),文件已存在返回 false // 提示:createNewFile() 抛 IOException,main 已声明 throws,也可用 try-catch // TODO 3: 判断——输出 file.isFile() / file.isDirectory() / file.exists() // TODO 4: 获取——输出 file.getName() / file.getPath() / file.getAbsolutePath() // TODO 5: 删除——file.delete(),注意只能删空目录 // TODO 6: 遍历目录——dir.listFiles() 返回 File[],用 foreach 输出每个子项的名字 } } ``` **思考题**: 1. `mkdir()` 和 `mkdirs()` 有什么区别?为什么创建多级目录更推荐 `mkdirs()`?(提示:父目录不存在时 mkdir 返回 false) 2. `createNewFile()` 为什么需要处理 `IOException`?(提示:编译期异常,创建文件可能失败) 3. `listFiles()` 返回什么类型?目录不存在时返回什么?(提示:`File[]`;返回 null) 4. `delete()` 删除非空目录会成功吗?(提示:不会,返回 false) 5. 绝对路径与相对路径有什么区别?`./` 表示什么?(提示:绝对路径从盘符开始,相对路径相对于当前项目) --- # 参考答案要点 ```java // TODO 1: 创建文件夹 System.out.println("mkdir 结果:" + folder.mkdir()); // true System.out.println("mkdirs 结果:" + new File("a/b/c").mkdirs()); // true(父目录一并创建) // TODO 2: 创建文件 System.out.println("createNewFile 结果:" + file.createNewFile()); // 首次 true // TODO 3: 判断 System.out.println("isFile:" + file.isFile()); // true System.out.println("isDirectory:" + file.isDirectory()); // false System.out.println("exists:" + file.exists()); // true // TODO 4: 获取 System.out.println("名称:" + file.getName()); // hello.txt System.out.println("相对路径:" + file.getPath()); // hello.txt System.out.println("绝对路径:" + file.getAbsolutePath()); // 完整盘符路径 // TODO 5: 删除 System.out.println("删除结果:" + file.delete()); // true // TODO 6: 遍历目录 File[] files = dir.listFiles(); for (File f : files) { System.out.println(f.getName() + (f.isDirectory() ? " <文件夹>" : " <文件>")); } ``` --- # 涵盖知识点总览 | 知识点 | 说明 | |--------|------| | `new File(String)` 构造方法 | 最常用,路径字符串 → File 对象 | | 绝对路径 vs 相对路径 | 绝对路径从盘符开始;相对路径相对于当前项目(`./`) | | mkdir / mkdirs | 单级 / 多级创建,父目录不存在时 mkdir 失败 | | createNewFile + IOException | 创建文件,编译期异常需处理 | | delete | 删除文件/空目录,非空目录返回 false | | isFile / isDirectory / exists | 判断文件/文件夹/是否存在 | | getName / getPath / getAbsolutePath | 获取名称、相对路径、绝对路径 | | listFiles 返回 File[] | 遍历目录,null 表示路径不存在 |