java 读取project_java project 和 java web project 获取路径问题
java project中如何獲得相對路徑(編譯后的目錄是在/bin目錄下)(一般圖片 這些目錄放在 項目目錄下,與src同級)
在static方法中,用
String path = Test.class.getResource("").getPath();
在非static方法中,用
String path = this.getClass().getResource("").getPath();
或
String path = Test.class.getResource("").getPath();
都行!!
(因為在static方法中沒有this關鍵字)
打印出來的結果如:
(以上獲取到的?? 是該類? 所在的相對路徑)
====>>>可以使用 Runtime.getRuntime().exec("p.exe");? 調用另一個現成的可執行程序或系統命令
Classpath?? 類路徑 ========》》可以理解為項目編譯后所在的路徑,其實就是項目的路徑
最準確講,應該是Source Folder的路徑(比如src目錄)
用UploadImage.class.getResource("/")??????????????????? 可以獲取類路徑classpath
注意:使用getResource的相對路徑一定要以“/”開頭,
輸出:
另外,還要注意:如果java路徑中含空格的話,這種方式獲取的路徑,其中的空格會被使用“%20”代替,
所以還需要使用String configPath=this.getClass().getResource("/").toString().replaceAll("%20", " ");進行解決!!!
總的來說,就是一下兩種:
1、其實在 web 項目中,你也可以直接寫成像這樣的字符串“images/1.jpg”,,它也是會按相對路徑來解析的,不過:
路徑不以“/”開頭;
脫離了IDE環境,這個寫法就是錯誤的,也并非每個IDE都如此,但我見到的都是這樣的。
(默認是該項目下,而非src下)
2、不同的是,使用getResource的相對路徑一定要以“/”開頭
【使用工程相對路徑是靠不住的。???? 使用CLASSPATH路徑是可靠的。
對于程序要讀取的文件,盡可能放到CLASSPATH下,這樣就能保證在開發和發布時候均正常讀取?!?/p>
通過CLASSPATH讀取包內文件::::
讀取包內文件,使用的路徑一定是相對的classpath路徑,比如a,位于包內,此時可以創建讀取a的字節流:
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
java web project中如何獲得相對路徑(編譯后的目錄是在/lib/classes目錄下)
(一般圖片這些目錄 都放在? webRoot或webContent目錄下)
直接寫成“images/1.jpg”,就可以按
相對路徑去解析了,默認是在
webRoot或webContent目錄下
這樣就可以顯示圖片了
但是不能在路徑前面加上“/”,比如
這樣是不行的。。
其實這些相對路徑,都是按編譯后的文件? 的目錄情況去找資源文件的,所以對編譯后的文件的目錄要清晰才行。
比如testtt的web項目,目錄為:
編譯后的目錄為:
1、
很少用::(更多的是直接用? “images/1.jpg”的形式)
取得項目 所在的相對路徑
輸出:
2、
取得絕對路徑:
使用HttpServletRequest 對象的getRealPath()方法
String path = request.getRealPath("");
輸出:
(如果在加上“/”)
輸出:
以上三個的結果都是一樣的:
(ServletContext對象獲得幾種方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
3、
在配置文件中配置所需要的路徑
注意:
java project項目獲取到的路徑是該目錄所在的路徑
而java web project項目中獲取到的路徑是部署到服務器(如tomcat上)的路徑
總結
以上是生活随笔為你收集整理的java 读取project_java project 和 java web project 获取路径问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调用线程必须为sta_Java手写分布式
- 下一篇: 【算法小积累】 - 提取非0数最右侧的1