说明:练习今日新学知识点——文件操作类
java.io.File的常用操作:创建(mkdir/mkdirs/createNewFile)、删除(delete)、判断(isFile/isDirectory/exists)、获取(getName/getPath/getAbsolutePath/listFiles)与IOException处理。
难度:⭐⭐⭐
知识点: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 输出每个子项的名字
}
}
思考题:
mkdir() 和 mkdirs() 有什么区别?为什么创建多级目录更推荐 mkdirs()?(提示:父目录不存在时 mkdir 返回 false)createNewFile() 为什么需要处理 IOException?(提示:编译期异常,创建文件可能失败)listFiles() 返回什么类型?目录不存在时返回什么?(提示:File[];返回 null)delete() 删除非空目录会成功吗?(提示:不会,返回 false)./ 表示什么?(提示:绝对路径从盘符开始,相对路径相对于当前项目)// 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 表示路径不存在 |