首頁 >Java >Java基礎 >java中如何讀取文件

java中如何讀取文件

尚
原創
2019-11-21 13:58:4161250瀏覽

java讀取檔案的方法:1、透過使用【java.io】方法讀取,相對於目前使用者目錄的相對路徑讀取;2、透過使用【java.lang.ClassLoader】方法讀取,相對於classpath的相對路徑讀取。

java中如何讀取文件

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("...");

1、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 中)。

2、使用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知識請關注

java基礎教學

以上是java中如何讀取文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn