Java中的file.length()
和Files.size()
之間是否存在任何實現差異? Java 7引入了Files.size()
方法。Java 7中的Files.size()實現
5
A
回答
5
JDK 7中的java.nio.file.Files
類是一個提供對文件進行操作的靜態方法的類。
Files.size(String path)
方法返回基於java.nio.file.spi.FileSystemProvider
的文件大小。這與File.length()
無關,因爲這會返回實際已連接到的實際文件大小。
17
主要區別在於Files.size()
可以處理不是「常規文件」的東西(如Files.isRegularFile()
所定義的)。
這意味着,這取決於FileSystemProviders
你有可用的,它可能是能夠獲得一個ZIP文件中的文件的大小,它可能是能夠處理通過FTP/SFTP訪問的文件,...
普通老File.length()
不能做任何。它只有只有處理「真實」文件(即底層操作系統作爲文件處理的文件)。
1
的一個重要區別是,Files.size()
拋出IOException如果出現錯誤,而File.length()
只是返回0。因此,我要建議使用Files.size()
因爲:
- 這是不可能的空文件,錯誤區分發生在
File.length()
,因爲它在兩種情況下都會返回0。 - 如果發生錯誤,您將無法通過
File.length()
獲取有關錯誤原因的任何信息。相比之下,從Files.size()
拋出的IOException通常會包含指示失敗原因的消息。
此外,如this answer描述,Files.size()
可以與任何文件系統供應商(例如,對於ZIP或FTP文件系統)工作,同時File.length()
只與你的操作系統暴露的「常規」文件系統的工作原理。
結論:總體而言,更喜歡新的Files
類的方法而不是傳統的File
類。
相關問題
- 1. Java 7中如何實現multi-catch?
- 2. Java 7試用資源(AutoCloseable)實現
- 3. 如何在EPiServer 7中實現dijit 7
- 4. Java中的Java實現
- 5. JavaMail API和Tomcat 7實現
- 6. Java 7中的橢圓曲線加密實現
- 7. 實現Windows Phone中的Bing地圖7
- 8. Uri.IsWellFormedUriString WP 7實現中的錯誤?
- 9. Java中的Iterable的實現
- 10. 實現在Java中
- 11. 在Java 7中實現併發性和並行性
- 12. java中的圖實現
- 13. java中的SMTP實現
- 14. 在Java中的diff實現
- 15. curl Java中的HTTPS實現
- 16. java中的RNTN實現
- 17. Java中的PCA實現
- 18. Java中的A星實現
- 19. Java中eval()的實現
- 20. Java中的KDTree實現
- 21. Java中的RSA實現
- 22. Kademlia在Java中的實現
- 23. Java中的NTLM SSO實現
- 24. java中的Arrays.asList()實現
- 25. java中的PBEWithSHAAnd128BitRC4實現
- 26. java中的DOM實現
- 27. Java中的MD5實現
- 28. java中的隊列實現
- 29. Java中的BDD實現
- 30. java中的pagerank實現