文档

Java™ 教程
隐藏目录
旧版文件输入/输出代码
导航: Java基本类
课程: 基本I/O
章节: 文件I/O(使用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

因为Java SE 7版本中的文件I/O实现已经完全重构,所以不能仅仅将一个方法替换为另一个方法。如果您想使用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 Path 类
java.io.RandomAccessFile The SeekableByteChannel 功能。 随机访问文件
File.canRead, canWrite, canExecute Files.isReadable, Files.isWritable, 和 Files.isExecutable
在UNIX文件系统上,使用 管理元数据(文件和文件存储属性) 包检查九个文件权限。
检查文件或目录
管理元数据
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) 管理元数据
The 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.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 Files.createDirectory 创建目录
File.listRoots FileSystem.getRootDirectories 列出文件系统的根目录
File.getTotalSpace, File.getFreeSpace, File.getUsableSpace FileStore.getTotalSpace, FileStore.getUnallocatedSpace, FileStore.getUsableSpace, FileStore.getTotalSpace 文件存储属性

上一页:其他有用的方法
下一页:摘要