簡體   English   中英

java.io.File vs java.nio.Files這是新代碼中的首選?

[英]java.io.File vs java.nio.Files which is the preferred in new code?

在圍繞SO編寫答案時,用戶試圖指出java.io.File不應該在新代碼中使用,而是他認為應該使用對象java.nio.Files ; 他鏈接到這篇文章

現在我已經用Java開發了好幾年了,之前沒有聽過這個論點; 自從閱讀他一直在尋找的帖子,並沒有找到許多證實這一點的其他消息來源,而且就個人而言,我覺得文章中提出的許多觀點都很薄弱,如果你知道如何閱讀它們,那么文件類通常會告訴您具體問題。

當我不斷開發新代碼時,我的問題是:

這是Java社區中的一個活躍的參數嗎? 文件優於文件對新代碼? 兩者之間的主要優點/缺點是什么?

您鏈接的文檔給出了答案:

java.nio.file包定義Java虛擬機的接口和類,以訪問文件,文件屬性和文件系統。 此API可用於克服java.io.File類的許多限制。 toPath方法可用於獲取Path,該Path使用File對象表示的抽象路徑來定位文件。 生成的Path可以與Files類一起使用,以提供對其他文件操作,文件屬性和I / O異常的更有效和廣泛的訪問,以幫助在文件操作失敗時診斷錯誤。

File有一個更新的實現: Path 使用構建器Paths.get("...") Files有很多很好的實用功能,也有更好的實現( move而不是有時失敗的File.renameTo )。

Path維護其文件系統。 因此,您可以將zip文件系統(“jar:file:..... .zip”)復制到另一個文件系統的某個路徑,反之亦然。

File.toPath()可以幫助增量轉換。

僅在Files的實用程序就可以轉移到可以獲利的新類。

我會說這兩者都不是“首選”。 相反,我建議您查看應用程序所需的功能,並使用java.io.Filejava.nio.Files哪一個更好地滿足要求。

答案可能是平局,或java.nio.Files更好。 但這取決於你或你的團隊,而不是其他一些程序員。


這是Java社區中的一個活躍的參數嗎?

有些人會爭論任何事情。 但我會說社區(一般而言)有更重要的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM