JAVA使用相對路徑讀取配置文件


 

JAVA使用相對路徑讀取配置文件[align=center][/align][size=medium][/size]
   在軟件開發中經常遇到讀取配置文件,以及文件定位問題。今天做個總結。
   (一)在java project中的配置文件讀取
        java project項目的目錄結構只有兩個src和bin。src中存放的是源文件,bin中存放的是*.class的字節碼文件。源文件進過編譯就放進bin目錄中,其中也包括沒有編譯的配置文件。我們需要的是對bin中的配置文件進行讀取,因為項目最終打包成*.jar的就是bin目錄下的文件。采用相對路勁進行讀取的時候,需要確定此時相對的是哪一個基路徑。其實這個基路徑就是java.io默認定位到的當前用戶目錄("user.dir")(即工程根目錄)。相對於這個路徑在定位我們的配置文件。如下所示:
     File  file=new File("test/login.conf");
JVM就可以據"user.dir"與"test/login.conf" 得到完整的路徑(即絕對路徑)"D:\DecisionTree\test\login.conf",從而找到login.conf文件。
     通常我們使用  “類名”.class.getClassLoader().getResource("login.conf").openStream()來加載classes目錄下的配置文件。得到文件的輸入流。
     “類名”.class.getClassLoader().getResource("")定位到的絕對路徑是WEB-INF\classes目錄下。getResource(String filepath)。參數filepath是classes目錄下的相對路徑。

  (二)在java web project中的配置文件讀取
          如果我們把配置文件定義在了classpath路徑下。也就是WEB-INF\classes路徑下,那么就可以像讀取java project中的配置文件那樣讀取了。
          如果我們把配置文件定義在了WEB-INF的直接目錄下。而不是classes目錄下,那么是classpath之外的路徑了,通過上面的那種方式是讀取不到了。這是在應用環境下,要用到ServletContext,
   ServletActionContext.getServletContext().getResource("/")可以定位到當前web應用目錄 如:jndi:/server/TEST/  TEST為當前的web應用系統名。getResource(String filepath) 注意其中filepath必須以“/”開始。
   ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/config/login.conf");就可以得到/WEB-INF/config/login.conf文件的輸入流了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM