1. 程式人生 > >Java項目讀取配置文件時,找不到指定的文件???

Java項目讀取配置文件時,找不到指定的文件???

工作目錄 class java web str resource 指定 文件讀取 解釋 系統

唉,讀取個文件,也就是在項目裏面去獲得配置文件的目錄,然後,變成文件,有事沒事,總是出個 FileNotFoundException 系統找不到指定的文件,氣死人啦。
還有就是:System.getProperty("user.dir"),都說獲得的是“工作目錄”,有老鐵們在意這個,工作目錄怎麽理解嗎?我這做了個簡單的測試。
但是,你把這個配置文件放在項目的根目錄下面,也就是 說你的項目文件夾下面直接放一個配置文件,這個時候,就可以,啥前綴不加的,就可以讀取到,這個配置文件啦。
但是,這麽放置配置文件,好像有點不合適。
那麽,這個路徑究竟該如何寫,才不會報錯呢?
1,在 java project 中的配置文件讀取,項目打包是jar類型的。
System.getProperty("user.dir");
解釋:
默認定位到的當前用戶目錄("user.dir")(即工程根目錄)
JVM就可以據"user.dir" + "你自己設置的目錄" 得到完整的路徑(即絕對路徑)
這有個前提,你的工程不是web項目,不然,這個返回值就不是項目的根目錄啦,是tomcat的bin目錄。
2,在 java web project 中的配置文件讀取
ServletActionContext.getServletContext().xxx
這地方的 ServletActionContext 可不是讓你,直接拿來使用的,得分情況而定。

System.out.println("getProperty(\"user.dir\") " + System.getProperty("user.dir"));
System.out.println("getServletContext");
System.out.println("getRealPath " + request.getSession().getServletContext().getRealPath("/"));
System.out.println("getContextPath " + request.getSession().getServletContext().getContextPath());

System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourcePaths("/"));
System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/error.xml"));
return mav;
想知道這個運行的結果嗎?

getRealPath:
直接幹到了打成war包target下的項目名稱我這叫springMVC。
getContextPath:
這個就是獲得當前URL的地址,我訪問的這個鏈接全稱是:http://localhost:0000/lxk/student
看運行結果,就是你這個 web app 的名稱啦,因為後面的student算是子功能吧。
getResourcePaths:

一般,老鐵們搜索文章,都搜索到的是
System.getProperty("user.dir")
獲得的是工作目錄,這個搜索結果千篇一律。簡直可怕。因為,這些老鐵們從來沒測試過。
什麽叫工作目錄。。。
可以看到,我這個在,Java web項目裏面的允許結果,竟然是tomcat的bin 目錄。這個懂的自然懂,不懂的,還是渣渣的迷糊。
在非Java web 的項目裏面,這個 System.getProperty("user.dir") 的運行結果,如下。

歡迎工作一到五年的Java工程師朋友們加入Java技術交流:585550789請添加鏈接描述

Java項目讀取配置文件時,找不到指定的文件???