## Java File 类常用方法表 (`java.io.File`) File 类用于文件和目录路径名的抽象表示,提供文件/目录操作功能: | **方法类别** | **方法名** | **参数形式** | **返回类型** | **功能描述** | **示例** | | ------------ | ----------------------------------- | ------------------------------- | ------------ | ----------------------------- | ----------------------------------------------- | | **构造方法** | | | | | | | | `File(String pathname)` | `String pathname` | - | 通过路径创建File对象 | `File f = new File("test.txt")` | | | `File(String parent, String child)` | `String parent`, `String child` | - | 父路径+子路径创建 | `File f = new File("/dir", "file.txt")` | | | `File(File parent, String child)` | `File parent`, `String child` | - | 父文件对象+子路径创建 | `File f = new File(dir, "file.txt")` | | **路径信息** | | | | | | | | `getPath()` | `()` | `String` | 获取相对路径字符串 | `f.getPath()` → `"test.txt"` | | | `getAbsolutePath()` | `()` | `String` | 获取绝对路径字符串 | `f.getAbsolutePath()` → `/usr/test.txt` | | | `getCanonicalPath()` | `()` | `String` | 获取规范路径(解析`.`、`..`) | `f.getCanonicalPath()` → 标准路径 | | | `getName()` | `()` | `String` | 获取文件名/目录名 | `f.getName()` → `"test.txt"` | | | `getParent()` | `()` | `String` | 获取父目录路径 | `f.getParent()` → `/usr` | | | `getParentFile()` | `()` | `File` | 获取父目录File对象 | `f.getParentFile()` → File对象 | | **文件检测** | | | | | | | | `exists()` | `()` | `boolean` | 检查文件/目录是否存在 | `f.exists()` → `true/false` | | | `isFile()` | `()` | `boolean` | 是否是普通文件 | `f.isFile()` → `true/false` | | | `isDirectory()` | `()` | `boolean` | 是否是目录 | `f.isDirectory()` → `true/false` | | | `isHidden()` | `()` | `boolean` | 是否是隐藏文件 | `f.isHidden()` → `true/false` | | **权限检测** | | | | | | | | `canRead()` | `()` | `boolean` | 是否可读 | `f.canRead()` → `true/false` | | | `canWrite()` | `()` | `boolean` | 是否可写 | `f.canWrite()` → `true/false` | | | `canExecute()` | `()` | `boolean` | 是否可执行 | `f.canExecute()` → `true/false` | | **文件操作** | | | | | | | | `createNewFile()` | `()` | `boolean` | 创建新文件(原子操作) | `f.createNewFile()` → `true` 创建成功 | | | `delete()` | `()` | `boolean` | 删除文件/空目录 | `f.delete()` → `true` 删除成功 | | | `deleteOnExit()` | `()` | `void` | JVM退出时删除 | `f.deleteOnExit()` | | | `renameTo(File dest)` | `File dest` | `boolean` | 重命名/移动文件 | `f.renameTo(new File("new.txt"))` | | **目录操作** | | | | | | | | `mkdir()` | `()` | `boolean` | 创建单层目录 | `f.mkdir()` → `true` 创建成功 | | | `mkdirs()` | `()` | `boolean` | 递归创建多层目录 | `f.mkdirs()` → 创建所有层级 | | | `list()` | `()` | `String[]` | 获取目录内容(名称数组) | `f.list()` → `["a.txt", "b"]` | | | `listFiles()` | `()` | `File[]` | 获取目录内容(File对象数组) | `f.listFiles()` → File数组 | | **文件属性** | | | | | | | | `length()` | `()` | `long` | 获取文件大小(字节) | `f.length()` → `1024` | | | `lastModified()` | `()` | `long` | 最后修改时间(毫秒时间戳) | `f.lastModified()` → `1654000000000L` | | | `setLastModified(long time)` | `long time` | `boolean` | 设置最后修改时间 | `f.setLastModified(System.currentTimeMillis())` | | | `setReadOnly()` | `()` | `boolean` | 设为只读文件 | `f.setReadOnly()` → `true` | | **路径转换** | | | | | | | | `toPath()` | `()` | `Path` | 转为NIO Path对象(Java 7+) | `f.toPath()` → `Paths.get("test.txt")` | | | `toURI()` | `()` | `URI` | 转为URI格式 | `f.toURI()` → `file:///usr/test.txt` | ## 重要特性及使用说明: #### 1、路径表示 ```java // 跨平台路径处理 File dir = new File(File.separator + "data" + File.separator + "docs"); ``` #### 2、目录遍历 ```java // 遍历目录内容 File folder = new File("/path/to/folder"); if (folder.isDirectory()) { for (File file : folder.listFiles()) { System.out.println(file.getName()); } } ``` #### 3、递归目录遍历 ```java // 递归遍历目录树 public static void listFilesRecursive(File dir) { if (dir == null || !dir.isDirectory()) return; for (File file : dir.listFiles()) { if (file.isFile()) { System.out.println("文件: " + file.getAbsolutePath()); } else { listFilesRecursive(file); } } } ``` #### 4、文件过滤 ```java // 使用过滤器获取.txt文件 File[] textFiles = new File("/docs").listFiles((dir, name) -> name.endsWith(".txt")); ``` #### 5、临时文件处理 ```java // 创建临时文件 File temp = File.createTempFile("prefix_", ".tmp"); temp.deleteOnExit(); // JVM退出时自动删除 ``` #### 6、NIO.2 替代方案 (Java 7+) ```java // 使用NIO API替代File类 Path path = Paths.get("test.txt"); Files.createDirectories(path.getParent()); // 创建父目录 Files.write(path, "内容".getBytes()); // 写入文件 ``` > ⚠️ **注意事项**: > > 1. `renameTo()` 在不同文件系统间可能失败 > 2. `listFiles()` 在系统目录可能返回 `null` > 3. 文件操作需进行充分异常处理 > 4. 资源消耗大的操作建议使用 NIO Files API ### 新旧API对比建议: | **场景** | **传统File类** | **推荐NIO API** | | -------- | ----------------- | --------------------------------- | | 路径表示 | `new File("a/b")` | `Paths.get("a/b")` | | 文件读写 | `FileInputStream` | `Files.newInputStream(path)` | | 文件创建 | `createNewFile()` | `Files.createFile(path)` | | 目录创建 | `mkdirs()` | `Files.createDirectories(path)` | | 文件移动 | `renameTo()` | `Files.move(src, dest)` | | 文件属性 | `lastModified()` | `Files.getLastModifiedTime(path)` | Loading... ## Java File 类常用方法表 (`java.io.File`) File 类用于文件和目录路径名的抽象表示,提供文件/目录操作功能: | **方法类别** | **方法名** | **参数形式** | **返回类型** | **功能描述** | **示例** | | ------------ | ----------------------------------- | ------------------------------- | ------------ | ----------------------------- | ----------------------------------------------- | | **构造方法** | | | | | | | | `File(String pathname)` | `String pathname` | - | 通过路径创建File对象 | `File f = new File("test.txt")` | | | `File(String parent, String child)` | `String parent`, `String child` | - | 父路径+子路径创建 | `File f = new File("/dir", "file.txt")` | | | `File(File parent, String child)` | `File parent`, `String child` | - | 父文件对象+子路径创建 | `File f = new File(dir, "file.txt")` | | **路径信息** | | | | | | | | `getPath()` | `()` | `String` | 获取相对路径字符串 | `f.getPath()` → `"test.txt"` | | | `getAbsolutePath()` | `()` | `String` | 获取绝对路径字符串 | `f.getAbsolutePath()` → `/usr/test.txt` | | | `getCanonicalPath()` | `()` | `String` | 获取规范路径(解析`.`、`..`) | `f.getCanonicalPath()` → 标准路径 | | | `getName()` | `()` | `String` | 获取文件名/目录名 | `f.getName()` → `"test.txt"` | | | `getParent()` | `()` | `String` | 获取父目录路径 | `f.getParent()` → `/usr` | | | `getParentFile()` | `()` | `File` | 获取父目录File对象 | `f.getParentFile()` → File对象 | | **文件检测** | | | | | | | | `exists()` | `()` | `boolean` | 检查文件/目录是否存在 | `f.exists()` → `true/false` | | | `isFile()` | `()` | `boolean` | 是否是普通文件 | `f.isFile()` → `true/false` | | | `isDirectory()` | `()` | `boolean` | 是否是目录 | `f.isDirectory()` → `true/false` | | | `isHidden()` | `()` | `boolean` | 是否是隐藏文件 | `f.isHidden()` → `true/false` | | **权限检测** | | | | | | | | `canRead()` | `()` | `boolean` | 是否可读 | `f.canRead()` → `true/false` | | | `canWrite()` | `()` | `boolean` | 是否可写 | `f.canWrite()` → `true/false` | | | `canExecute()` | `()` | `boolean` | 是否可执行 | `f.canExecute()` → `true/false` | | **文件操作** | | | | | | | | `createNewFile()` | `()` | `boolean` | 创建新文件(原子操作) | `f.createNewFile()` → `true` 创建成功 | | | `delete()` | `()` | `boolean` | 删除文件/空目录 | `f.delete()` → `true` 删除成功 | | | `deleteOnExit()` | `()` | `void` | JVM退出时删除 | `f.deleteOnExit()` | | | `renameTo(File dest)` | `File dest` | `boolean` | 重命名/移动文件 | `f.renameTo(new File("new.txt"))` | | **目录操作** | | | | | | | | `mkdir()` | `()` | `boolean` | 创建单层目录 | `f.mkdir()` → `true` 创建成功 | | | `mkdirs()` | `()` | `boolean` | 递归创建多层目录 | `f.mkdirs()` → 创建所有层级 | | | `list()` | `()` | `String[]` | 获取目录内容(名称数组) | `f.list()` → `["a.txt", "b"]` | | | `listFiles()` | `()` | `File[]` | 获取目录内容(File对象数组) | `f.listFiles()` → File数组 | | **文件属性** | | | | | | | | `length()` | `()` | `long` | 获取文件大小(字节) | `f.length()` → `1024` | | | `lastModified()` | `()` | `long` | 最后修改时间(毫秒时间戳) | `f.lastModified()` → `1654000000000L` | | | `setLastModified(long time)` | `long time` | `boolean` | 设置最后修改时间 | `f.setLastModified(System.currentTimeMillis())` | | | `setReadOnly()` | `()` | `boolean` | 设为只读文件 | `f.setReadOnly()` → `true` | | **路径转换** | | | | | | | | `toPath()` | `()` | `Path` | 转为NIO Path对象(Java 7+) | `f.toPath()` → `Paths.get("test.txt")` | | | `toURI()` | `()` | `URI` | 转为URI格式 | `f.toURI()` → `file:///usr/test.txt` | ## 重要特性及使用说明: #### 1、路径表示 ```java // 跨平台路径处理 File dir = new File(File.separator + "data" + File.separator + "docs"); ``` #### 2、目录遍历 ```java // 遍历目录内容 File folder = new File("/path/to/folder"); if (folder.isDirectory()) { for (File file : folder.listFiles()) { System.out.println(file.getName()); } } ``` #### 3、递归目录遍历 ```java // 递归遍历目录树 public static void listFilesRecursive(File dir) { if (dir == null || !dir.isDirectory()) return; for (File file : dir.listFiles()) { if (file.isFile()) { System.out.println("文件: " + file.getAbsolutePath()); } else { listFilesRecursive(file); } } } ``` #### 4、文件过滤 ```java // 使用过滤器获取.txt文件 File[] textFiles = new File("/docs").listFiles((dir, name) -> name.endsWith(".txt")); ``` #### 5、临时文件处理 ```java // 创建临时文件 File temp = File.createTempFile("prefix_", ".tmp"); temp.deleteOnExit(); // JVM退出时自动删除 ``` #### 6、NIO.2 替代方案 (Java 7+) ```java // 使用NIO API替代File类 Path path = Paths.get("test.txt"); Files.createDirectories(path.getParent()); // 创建父目录 Files.write(path, "内容".getBytes()); // 写入文件 ``` > ⚠️ **注意事项**: > > 1. `renameTo()` 在不同文件系统间可能失败 > 2. `listFiles()` 在系统目录可能返回 `null` > 3. 文件操作需进行充分异常处理 > 4. 资源消耗大的操作建议使用 NIO Files API ### 新旧API对比建议: | **场景** | **传统File类** | **推荐NIO API** | | -------- | ----------------- | --------------------------------- | | 路径表示 | `new File("a/b")` | `Paths.get("a/b")` | | 文件读写 | `FileInputStream` | `Files.newInputStream(path)` | | 文件创建 | `createNewFile()` | `Files.createFile(path)` | | 目录创建 | `mkdirs()` | `Files.createDirectories(path)` | | 文件移动 | `renameTo()` | `Files.move(src, dest)` | | 文件属性 | `lastModified()` | `Files.getLastModifiedTime(path)` | 最后修改:2025 年 10 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。