這篇文章運用簡單易懂的例子給大家介紹java讀取文件的方法,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
java讀取文件的兩種方法:java.io和java.lang.ClassLoader
// java.io: File file = new File("..."); FileInputStream fis = new FileInputStream("..."); FileReader fr = new FileReader("..."); //ClassLoader: ClassLoader loader = XXXClass.class.getClassLoader(); ClassLoader loader2 = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource("..."); File file = new File(url.getFile()); InputStream input = loader.getResourceAsStream("...");
java.io 包中的類總是根據當前用戶目錄來分析相對路徑名,也就是說相對路徑是否好使,取決于 user.dir 的值。系統屬性 user.dir 是 JVM 啟動的時候設置的,通常是 Java 虛擬機的調用目錄,即執行 java 命令所在的目錄。
對于 tomcat/jboss 容器,user.dir 是 %home/bin%/ 目錄,因為這個目錄就是我們啟動 web 容器的地方
在 eclipse 中運行程序的時候,eclipse 會將 user.dir 的值設置為工程的根目錄
用戶目錄可以使用 System.getProperty("user.dir") 來查看
所以說,使用 java.io 讀取文件,無論是相對路徑,還是絕對路徑都不是好的做法,能不使用就不要使用(在 JavaEE 中)。
使用ClassLoader
Class.getResource() 有 2 種方式,絕對路徑和相對路徑。絕對路徑以 / 開頭,從 classpath 或 jar 包根目錄下開始搜索;
相對路徑是相對當前 class 所在的目錄,允許使用 .. 或 . 來定位文件。
ClassLoader.getResource() 只能使用絕對路徑,而且不用以 / 開頭。
這兩種方式讀取資源文件,不會依賴于 user.dir,也不會依賴于具體部署的環境,是推薦的做法(JavaEE)
如何選取
java.io:
相對于當前用戶目錄的相對路徑讀取;注重與磁盤文件打交道或者純 java project 中使用。
雖然 ClassLoader 方式更通用,但是如果不是 javaEE 環境,要定位到 classpath 路徑下去讀文件是不合理的。
java.lang.ClassLoader:
相對于 classpath 的相對路徑讀取;建議在 javaEE 環境中都使用這種方式。
通常,ClassLoader 不能讀取太大的文件,它適合讀取 web 項目的那些配置文件,如果需要讀取大文件,還是要用 IO 包下的,可以先通過 ClassLoader 獲取到文件的絕對路徑,然后傳給 File 或者其他對象,用 io 包里的對象去讀取會更好些。
關于java讀取文件的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁題目:java讀取文件的方法-創新互聯
文章網址:http://vcdvsql.cn/article18/djgidp.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、搜索引擎優化、Google、外貿網站建設、網站設計公司、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯