在Java中PathFile都是类。 它们属于不同的程序包,但是执行相同的机制。 我们可以说Java Path类是File类的高级版本。 我们将两个类都用于文件I/O操作。 在本节中,我们将学习路径和文件的区别。

1. Java File类

在Java中,File是属于java.io包的类。 它是文件和目录路径名的抽象表示。 它用于文件I/O,但有许多缺点。

2. Java Path类

它与File类相同,或者可以说它是Java File类的替代类。 它可以执行可以在File类的帮助下完成的所有操作。 Java Path类属于java.nio.file包。 它是现代java.nio.file库的一部分。 通常用于创建新项目。

3. Java Path和File类的区别

在Java SE 1.7发行版之前,我们曾经使用java.io.File类作为文件I/O。但是File类有几个缺点。 File类的许多方法都不会引发异常,即使它们无法产生所需的输出也是如此。因此,很难获得有用的错误消息。

假设要删除文件,并且实现文件删除功能的程序无法删除文件。程序显示失败消息删除失败。但是它无法确定失败原因。文件删除失败的原因可能是文件不存在或文件路径错误,或者用户没有权限或其他原因。

另一个缺点是Java File类不支持符号链接(也称为符号链接或软链接),并且named()方法在整个平台上均不能一致地工作。在文件I/O中,我们需要对File类中较差的元数据的更多支持。元数据可以包括权限,文件所有者和安全属性。

文件类的方法无法扩展。大型目录列表的请求可能导致服务器挂起。它还可能会导致内存资源问题,从而导致DoS(拒绝服务)。

因此,Java File类具有许多缺点,因此没有理由将此类用于新项目开发。

如果我们拥有使用java.io.File类的旧代码,则Oracle会提示使用Path类。它具有Path类的优点,并且对代码的影响最小。

Java File类提供了toPath()方法,用于将旧式文件转换为java.nio.file.Path实例。例如:

Path input = file.toPath();

它提供了Java Path类中可用的高级功能和丰富功能。 假设我们要删除一个文件:

file.delete();

我们可以使用Files类的delete()方法修改上述语句,如下所示:

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

比较这两个类时,我们可以发现java.nio.file.Pathjava.io.File类更好。

Java Path类更好,新版本中不建议使用java.io.File类。 android框架仍将File类用于其基本文件处理功能。

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

在Java SE 1.7发行版中,文件I/O架构已被完全重新设计。我们不能将一种方法换成另一种方法,如果要开发与文件I/O相关的新项目,并且想使用java.nio.file包提供的丰富功能,请使用File类的toPath()方法。 可以使用Path类的功能,但是如果您不满意并且不能满足需求,则应重写文件I/O代码。

下表概述了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 iles.isReadable, Files.isWritable, Files.isExecutable. 它用于检查授予文件的权限。
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 用于删除文件或目录
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.hasdiffer.com]
本文标题:Java Path和File类的区别
本文链接:http://www.vsdiffer.com/java-path-vs-file.html
免责声明:本站部分内容除注明转载外,均为本站网站用户投稿或互联网整理。对于该内容的正确性如何,本站不负任何责任。同时,如本网站内容无意之中冒犯了您的权益,请联系站长,邮箱:1478761107#qq.com(使用@代替#),我们核实并会尽快处理。

随机