Files.size()在Java 7中的实现

Files.size()在Java 7中的实现,java,Java,Java中的file.length()和Files.size()之间在实现上有什么区别吗?Java7引入了Files.size()方法。主要区别在于可以处理非“常规文件”(定义为)的内容 这意味着,根据您可用的文件类型,它可以获得ZIP文件中文件的大小,可以处理通过FTP/SFTP访问的文件 普通的老人做不到这一点。JDK 7中的java.nio.file.files类提供对文件进行操作的静态方法 Files.size(字符串路径)方法返回基于字符串的文件大小。这与File.length()无关

Java中的
file.length()
Files.size()
之间在实现上有什么区别吗?Java7引入了
Files.size()
方法。

主要区别在于可以处理非“常规文件”(定义为)的内容

这意味着,根据您可用的文件类型,它可以获得ZIP文件中文件的大小,可以处理通过FTP/SFTP访问的文件


普通的老人做不到这一点。JDK 7中的
java.nio.file.files
类提供对文件进行操作的静态方法


Files.size(字符串路径)
方法返回基于字符串的文件大小。这与
File.length()
无关,因为它会返回实际“连接”到的实际文件大小。

一个重要的区别是
Files.size()
在出现问题时抛出IOException,而
File.length()
仅返回0。因此,我建议使用
Files.size()
,因为:

  • 无法区分空文件和使用
    file.length()
    发生的错误,因为在这两种情况下它都将返回0
  • 如果发生错误,您将无法通过
    File.length()
    获得有关错误原因的任何信息。相反,从
    Files.size()
    引发的IOException通常会包含一条指示故障原因的消息
此外,如中所述,
Files.size()
可以与任何文件系统提供程序(例如,ZIP或FTP文件系统)一起使用,而
file.length()
只能与操作系统公开的“常规”文件系统一起使用

结论:一般来说,与传统的
文件
类相比,更喜欢较新的
文件
类中的方法。

根据文档返回“实际文件大小”:
返回文件大小(以字节为单位)。由于压缩、支持稀疏文件或其他原因,该大小可能与文件系统上的实际大小不同