首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Files.size()在Java7中的实现

问Files.size()在Java7中的实现
EN

Stack Overflow用户
提问于 2011-08-29 13:54:22
回答 3查看 8.6K关注 0票数 9

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-29 14:17:47

JDK7中的java.nio.file.Files类是一个提供对文件进行操作的静态方法的类。

Files.size(String path)方法根据java.nio.file.spi.FileSystemProvider返回文件大小。这与File.length()无关,因为它会返回实际“连接”到的实际文件大小。

票数 6
EN

Stack Overflow用户

发布于 2011-08-29 14:10:41

主要区别在于,Files.size()可以处理不是“常规文件”(由Files.isRegularFile()定义)的内容。

这意味着,根据您拥有的FileSystemProviders,它可以获取ZIP文件中文件的大小,它可以处理通过FTP/SFTP访问的文件,...

普通的老式File.length()不能做到这一点。It 仅处理“真实”文件(即底层操作系统也将其作为文件处理的文件)。

票数 20
EN

Stack Overflow用户

发布于 2015-10-20 02:05:24

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

  • 无法区分空文件和使用File.length()时发生的错误,因为这两种情况下都会返回0。
  • 如果发生错误,您将无法使用File.length()获得有关错误原因的任何信息。相反,从Files.size()抛出的IOException通常会包含一条指示失败原因的消息。

此外,正如在this answer中所描述的,Files.size()可以与任何文件系统提供商一起工作(例如,用于ZIP或FTP文件系统),而File.length()只能与您的操作系统公开的“常规”文件系统一起工作。

结论:一般来说,比起传统的File类,更喜欢新的Files类中的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7226588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档