程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 深刻剖析java文件途徑的詳解

深刻剖析java文件途徑的詳解

編輯:關於JAVA

深刻剖析java文件途徑的詳解。本站提示廣大學習愛好者:(深刻剖析java文件途徑的詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻剖析java文件途徑的詳解正文


Java中應用的途徑,分為兩種:相對途徑和絕對途徑。歸根結柢,Java實質上只能應用相對途徑來尋覓資本。一切的絕對途徑尋覓資本的辦法,都不外是一些方便辦法。不外是API在底層贊助我們構建了相對途徑,從而找到資本的!
在開辟Web方面的運用時, 常常須要獲得 辦事器中以後WebRoot的物理途徑。
假如是Servlet , Action , Controller, 或則Filter , Listener , 攔阻器等相干類時, 我們只須要取得ServletContext, 然後經由過程ServletContext.getRealPath("/")來獲得以後運用在辦事器上的物理地址。
假如在類中取不到ServletContext時, 有兩種方法可以做到:
1. 應用Java的類加載機制 挪用 XXX.class.getClassLoader().getResource(""); 辦法來獲得到ClassPath , 然後處置取得WebRoot目次,這類方法只能是該class在WebRoot/WEB-INF/classes下能力失效, 假如該class被打包到一個jar文件中, 則該辦法掉效。這時候就應當用上面一種方法。
2. spring框架的思緒, 在WEB-INF/web.xml中 , 創立一個webAppRootKey的param, 指定一個值(默許為webapp.root)作為鍵值, 然後經由過程Listener , 或許Filter , 或許Servlet 履行String webAppRootKey = getServletContext().getRealPath("/"); 並將webAppRootKey對應的webapp.root 分離作為Key , Value寫到System Properties體系屬性中。以後在法式中經由過程System.getProperty("webapp.root")來取得WebRoot的物理途徑。
依據第二種的思緒,我們還可以再擴大一下。不外關於在安排在一台辦事器中的運用來講,若還不是你所需請再往下看。
上面是一些獲得classpath和以後類的相對途徑的一些辦法。你可以使用個中的一些辦法來獲得你須要的資本的相對途徑:
1. DebitNoteAction.class.getResource("")
獲得的是以後類FileTest.class文件的URI目次。不包含本身!
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
atacarnet/src/com/evi/modules/atacarnet/action/
2. DebitNoteAction.class.getResource("/")
獲得的是以後的classpath的相對URI途徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
3. Thread.currentThread().getContextClassLoader().getResource("")
獲得的也是以後ClassPath的相對URI途徑
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
4. DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
獲得的也是以後ClassPath的相對URI途徑。
如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
5. 獲得辦事器絕對途徑
System.getProperty("user.dir")
例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin
我推舉應用Thread.currentThread().getContextClassLoader().getResource("")來獲得以後的classpath的相對途徑的URI表現法
6. 獲得項目中的相對途徑
普通用request.getRealPath("/")或request.getRealPath("/config/")
但如今不倡導應用request.getRealPath("/")了,年夜家可試用ServletContext.getRealPath("/")辦法獲得Web運用法式的根目次的相對途徑
要獲得src的文件異常輕易,由於src是默許的絕對目次,好比你說要獲得src下com目次的test.java文件,你只須要如許就夠了
File f = new File(com/test.java);
但假如我要獲得不在src目次或許WebRoot目次下的文件呢,而是要從src或許WebRoot同級的目次中取呢,好比說doc吧
我的硬辦法是如許完成的:
String path = this.getServletContext().getRealPath("/");
Properties p = new Properties();
p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
System.out.println(p.getProperty("driverName"));
然則我發明一個成績,就是當我用IO流拜訪web工程WEB-INF目次下的文件時,會報異常,告知我相干文件找不到,不曉得是甚麼緣由?
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved