文档

Java™ 教程-Java Tutorials 中文版
旧版文件 I/O 代码
Trail: Essential Classes
Lesson: Basic I/O
Section: File I/O (Featuring NIO.2)

旧版文件 I/O 代码

与旧版代码的互操作性

在 Java SE 7 发行版之前,java.io.File 类是用于文件 I/O 的机制,但它有几个缺点。

也许你有使用 java.io.File 的遗留代码,并希望利用 java.nio.file.Path 功能,而对代码的影响最小。

java.io.File 类提供 toPath 方法,该方法将旧样式 File 实例转换为 java.nio.file.Path 实例,如下:

Path input = file.toPath();

然后,你可以利用 Path 类可用的丰富功能集。

例如,假设你有一些删除文件的代码:

file.delete();

你可以修改此代码以使用 Files.delete 方法,如下所示:

Path fp = file.toPath();
Files.delete(fp);

相反,Path.toFile 方法为 Path 对象构造 java.io.File 对象。

将 java.io.File 功能映射到 java.nio.file

由于文件 I/O 的 Java 实现已在 Java SE 7 发行版中完全重新构建,因此你无法将一种方法替换为另一种方法。如果要使用 java.nio.file 包提供的丰富功能,最简单的解决方案是使用 File.toPath 方法正如上一节所述。但是,如果你不想使用该方法或者它不足以满足你的需求,则必须重写文件 I/O 代码。

两个 API 之间没有一对一的对应关系,但是下表让你大致了解 java.io.File API 中的哪些功能映射到 java.nio.file API 并告诉你可以从何处获取更多信息。

java.io.File 功能 java.nio.file 功能 教程覆盖范围
java.io.File java.nio.file.Path 路径类
java.io.RandomAccessFile SeekableByteChannel 功能。 随机访问文件
File.canReadcanWritecanExecute Files.isReadableFiles.isWritableFiles.isExecutable
在 UNIX 文件系统上,Managing Metadata (File and File Store Attributes) 包用于检查九个文件权限。
检查文件或目录
管理元数据
File.isDirectory()File.isFile()File.length() Files.isDirectory(Path, LinkOption...)Files.isRegularFile(Path, LinkOption...)Files.size(Path) 管理元数据
File.lastModified()File.setLastModified(long) Files.getLastModifiedTime(Path, LinkOption...)Files.setLastMOdifiedTime(Path, FileTime) 管理元数据
设置各种属性的 File 方法:setExecutablesetReadablesetReadOnlysetWritable 这些方法由 Files 方法 setAttribute(Path, String, Object, LinkOption...) 替换。 管理元数据
new File(parent, "newfile") parent.resolve("newfile") 路径操作
File.renameTo Files.move 移动文件或目录
File.delete Files.delete 删除文件或目录
File.createNewFile Files.createFile 创建文件
File.deleteOnExit 替换为 createFile 方法中指定的 DELETE_ON_CLOSE 选项。 创建文件
File.createTempFile Files.createTempFile(Path, String, FileAttributes<?>)Files.createTempFile(Path, String, String, FileAttributes<?>) 创建文件
使用流 I/O 创建和写入文件
使用通道 I/O 读取和写入文件
File.exists Files.existsFiles.notExists 验证文件或目录的存在
File.compareToequals Path.compareToequals 比较两条路径
File.getAbsolutePathgetAbsoluteFile Path.toAbsolutePath 转换路径
File.getCanonicalPathgetCanonicalFile Path.toRealPathnormalize 转换路径(toRealPath)
从路径中移除冗余(normalize)
File.toURI Path.toURI 转换路径
File.isHidden Files.isHidden 获取有关路径的信息
File.listlistFiles Path.newDirectoryStream 列出目录的内容
File.mkdirmkdirs Path.createDirectory 创建目录
File.listRoots FileSystem.getRootDirectories 列出文件系统的根目录
File.getTotalSpace, File.getFreeSpace, File.getUsableSpace FileStore.getTotalSpace, FileStore.getUnallocatedSpace, FileStore.getUsableSpace, FileStore.getTotalSpace 文件存储属性

Previous page: Other Useful Methods
Next page: Summary