文档

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.canRead,canWrite,canExecute Files.isReadable,Files.isWritable 和 Files.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 方法:setExecutable,setReadable,setReadOnly,setWritable 这些方法由 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.exists 和 Files.notExists 验证文件或目录的存在
File.compareTo 和 equals Path.compareTo 和 equals 比较两条路径
File.getAbsolutePath 和 getAbsoluteFile Path.toAbsolutePath 转换路径
File.getCanonicalPath 和 getCanonicalFile Path.toRealPath 或 normalize 转换路径(toRealPath)
从路径中移除冗余(normalize)
File.toURI Path.toURI 转换路径
File.isHidden Files.isHidden 获取有关路径的信息
File.list 和 listFiles Path.newDirectoryStream 列出目录的内容
File.mkdir 和 mkdirs 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