20260806-File文件操作练习.md 4.5 KB

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("路径字符串") 创建对象,完成下面的常用操作。

代码框架

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. 绝对路径与相对路径有什么区别?./ 表示什么?(提示:绝对路径从盘符开始,相对路径相对于当前项目)

参考答案要点

// 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 表示路径不存在