Java 文件系统操作:实用指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java 文件系统操作:实践

\n\n

在现代 Java 开发中,文件系统操作是一项基础任务。无论是保存配置、处理日志还是加载用户数据,能够熟练地与文件和目录交互是每位开发者必备的技能。本文将使用经典方法(File 类)和现代 NIO.2 API(Path、Files)来剖析 Java 文件系统操作的实践方面。

\n\n

本文面向实践者:您将获得可直接用于项目的现成代码示例。我们将讨论文件的创建、读取、写入、复制和删除,以及目录操作。

\n\n

经典方法:File 类

\n\n

在 Java 7 出现之前,java.io.File 类是文件系统操作的主要工具。尽管它被认为已过时,但在遗留项目中仍会见到。让我们看看基本操作。

\n\n

创建文件:

\n
import java.io.File;\nimport java.io.IOException;\n\npublic class FileExample {\n    public static void main(String[] args) {\n        File file = new File("example.txt");\n        try {\n            if (file.createNewFile()) {\n                System.out.println("文件已创建: " + file.getName());\n            } else {\n                System.out.println("文件已存在.");\n            }\n        } catch (IOException e) {\n            System.out.println("创建文件时出错: " + e.getMessage());\n        }\n    }\n}
\n\n

检查文件是否存在及其属性:

\n
File file = new File("example.txt");\nif (file.exists()) {\n    System.out.println("文件存在");\n    System.out.println("绝对路径: " + file.getAbsolutePath());\n    System.out.println("大小: " + file.length() + " 字节");\n    System.out.println("可读: " + file.canRead());\n    System.out.println("可写: " + file.canWrite());\n}
\n\n
    \n
  • exists() — 检查文件或目录是否存在。
  • \n
  • isFile() — 判断对象是否为文件。
  • \n
  • isDirectory() — 判断对象是否为目录。
  • \n
  • length() — 返回文件大小(字节)。
  • \n
  • delete() — 删除文件或空目录。
  • \n
\n\n

File 类的缺点是不支持符号链接、元数据,且异常处理能力有限。对于新项目,建议使用 NIO.2。

\n\n

现代方法:NIO.2(Path 和 Files)

\n\n

从 Java 7 开始,JDK 包含了 java.nio.file 包,提供了更灵活、性能更高的 API。主要类包括:Path(表示文件或目录的路径)和 Files(包含用于操作的静态方法)。

\n\n

使用 Files 创建文件:

\n
import java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\nimport java.io.IOException;\n\npublic class NioExample {\n    public static void main(String[] args) {\n        Path path = Paths.get("nio_example.txt");\n        try {\n            Files.createFile(path);\n            System.out.println("文件已创建: " + path.toAbsolutePath());\n        } catch (IOException e) {\n            System.out.println("错误: " + e.getMessage());\n        }\n    }\n}
\n\n

创建目录:

\n
Path dirPath = Paths.get("myDir/subDir");\ntry {\n    Files.createDirectories(dirPath); // 创建所有缺失的父目录\n    System.out.println("目录已创建: " + dirPath);\n} catch (IOException e) {\n    e.printStackTrace();\n}
\n\n

读取和写入文件:

\n

最简单的读取方

博客

书籍推荐