Java 文件系统操作:实践
\n\n在现代 Java 开发中,文件系统操作是一项基础任务。无论是保存配置、处理日志还是加载用户数据,能够熟练地与文件和目录交互是每位开发者必备的技能。本文将使用经典方法(File 类)和现代 NIO.2 API(Path、Files)来剖析 Java 文件系统操作的实践方面。
本文面向实践者:您将获得可直接用于项目的现成代码示例。我们将讨论文件的创建、读取、写入、复制和删除,以及目录操作。
\n\n经典方法:File 类
\n\n在 Java 7 出现之前,java.io.File 类是文件系统操作的主要工具。尽管它被认为已过时,但在遗留项目中仍会见到。让我们看看基本操作。
创建文件:
\nimport 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检查文件是否存在及其属性:
\nFile 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
File 类的缺点是不支持符号链接、元数据,且异常处理能力有限。对于新项目,建议使用 NIO.2。
现代方法:NIO.2(Path 和 Files)
\n\n从 Java 7 开始,JDK 包含了 java.nio.file 包,提供了更灵活、性能更高的 API。主要类包括:Path(表示文件或目录的路径)和 Files(包含用于操作的静态方法)。
使用 Files 创建文件:
\nimport 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创建目录:
\nPath 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最简单的读取方