在Java中,file.length()和Files.size()在实现上有什么区别吗?Java7引入了Files.size()方法。
发布于 2011-08-29 14:17:47
JDK7中的java.nio.file.Files类是一个提供对文件进行操作的静态方法的类。
Files.size(String path)方法根据java.nio.file.spi.FileSystemProvider返回文件大小。这与File.length()无关,因为它会返回实际“连接”到的实际文件大小。
发布于 2011-08-29 14:10:41
主要区别在于,Files.size()可以处理不是“常规文件”(由Files.isRegularFile()定义)的内容。
这意味着,根据您拥有的FileSystemProviders,它可以获取ZIP文件中文件的大小,它可以处理通过FTP/SFTP访问的文件,...
普通的老式File.length()不能做到这一点。It 仅处理“真实”文件(即底层操作系统也将其作为文件处理的文件)。
发布于 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类中的方法。
https://stackoverflow.com/questions/7226588
复制相似问题