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. Java中的Java實現
- 4. 實現在Java中
- 5. java中的隊列實現
- 6. curl Java中的HTTPS實現
- 7. java中的SMTP實現
- 8. Java中的BDD實現
- 9. java中的RNTN實現
- 10. Java中的KDTree實現
- 11. java中的圖實現
- 12. Java中的RSA實現
- 13. 在Java中的ActionListener實現
- 14. java中的pagerank實現
- 15. java中的DOM實現
- 16. Java中的NTLM SSO實現
- 17. RFC2898DeriveBytes在Java中的實現
- 18. Java中eval()的實現
- 19. 在Java中的diff實現
- 20. ZipCrypto的實現在java中
- 21. Java中Kraken API的實現
- 22. Java中接口的實現
- 23. Kademlia在Java中的實現
- 24. 如何實現PSR-7?
- 25. Java中樹的現有實現?
- 26. Java的MPI實現
- 27. SCIM的Java實現
- 28. Java GPU的實現
- 29. Java實現
- 30. CircularArrayQueue實現Java