① java如何得到文件路徑
要得到什麼文件路徑``
在你要用路徑的時候 比如 <img src="XXXXXXXX"></ing>
中間的XXXXXX你就這么寫`先把原來的文件路徑用STRING 形式存在資料庫`
現在取出來`賦給變數 abc
在這里再寫成
String abc = "你的文件路徑"
<img src="<%=ABC%>"></ing>
② java項目中文件的路徑
java項目中文件的路徑-方法大全
一、 相對路徑的獲得
說明:相對路徑(即不寫明時候到底相對誰)均可通過以下方式獲得(不論是一般的java項目還是web項目)
System.getProperty("user.dir");
上述相對路徑中,java項目中的文件是相對於項目的根目錄web項目中的文件路徑視不同的web伺服器不同而不同(tomcat是相對於tomcat安裝目錄in)
二 類載入目錄的獲得(即當運行時某一類時獲得其裝載目錄)
1.1)通用的方法一(不論是一般的java項目還是web項目,先定位到能看到包路徑的第一級目錄)
InputStreamis=TestAction.class.getClassLoader().getResourceAsStream("test.txt");(test.txt文件的路徑為 項目名src est.txt;類TestPath所在包的第一級目錄位於src目錄下)
三 web項目根目錄的獲得(發布之後)
1 從servlet出發
可建立一個servlet在其的init方法中寫入如下語句(沒有請求的話會拋空指針導常)
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (關鍵)
結果形如:F: omcat-6.0.36webapps est(test為項目名字)
如果是調用了s1.getRealPath("")則輸出F: omcat-6.0.36webapps est(少了一個"")
2 從httpServletRequest出發(沒有請求的話會拋空指針導常)
String path=request.getSession().getServletContext().getRealPath("/");
結果形如:F: omcat-6.0.36webapps est
四 classpath的獲取(在Eclipse中為獲得src或者classes目錄的路徑),放在監聽器,可以窗口啟動獲取路徑
方法一Thread.currentThread().getContextClassLoader().getResource("").getPath()
String path = Thread.currentThread().getContextClassLoader()
.getResource("").getPath();
System.out.println("path========"+ path);輸出:path========/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
方法二JdomParse.class.getClassLoader().getResource("").getPath()(JdomParse為src某一個包中的類,下同)
eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
輸出:JdomParse.class.getClassLoader().getResource-/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
另外,如果想把文件放在某一包中,則可以 通過以下方式獲得到文件(先定位到該包的最後一級目錄)
eg String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
輸出:JdomParse.class.getResource--/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
(JdomParse為src目錄下jdom包中的類)
四 屬性文件的讀取:
方法 一
InputStream in = lnewBufferedInputStream(newFileInputStream(name));
Properties p =newProperties();p.load(in);
注意路徑的問題,做執行之後就可以調用p.getProperty("name")得到對應屬性的值
方法二
Locale locale =Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest",locale);
String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);
工程src目錄下propertiesTest.properties(名字後綴必須為properties)文件內容如下:
test=hello word
不通過Servlet獲取路徑
第一種實現
Java代碼
URL url = ClassLoader.getSystemClassLoader().getResource("./");
File file =newFile(url.getPath());
File parentFile =newFile(file.getParent());
System.out.println("webRoot:"+parentFile.getParent());
第二種實現
首先寫一個接聽類 (推薦使用,容器啟動時就執行,不會拋空指針異常,適合做定時器任務來刪除伺服器文件的路徑)
Java代碼:
package com.chinacreator.report.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* @authorxiaoqun.yi
*/
public class PathListener {
private staticServletContext servletContext;
public voidcontextDestroyed(ServletContextEvent sce) {
this.servletContext= sce.getServletContext();
System.out.println("path=======:"+servletContext.getRealPath("/"));
}
public voidcontextInitialized(ServletContextEvent arg0) {
}
}
在web.xml中加入如下配置
Java代碼 :
<listener>
<listener-class>com.chinacreator.report.listener.PathListener</listener-class>
</listener>
五、Java中的getResourceAsStream有以下幾種:
1. Class.getResourceAsStream(String path) : path 不以』/'開頭時默認是從此類所在的包下取資源,以』/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由 ClassLoader(類載入器)(獲取資源)
2. Class.getClassLoader.getResourceAsStream(String path) :默認則是從ClassPath根下獲取,path不能以』/'開頭,最終是由ClassLoader獲取資源。
3. ServletContext. getResourceAsStream(String path):默認從WebAPP根目錄下取資源,Tomcat下path是否以』/'開頭無所謂,當然這和具體的容器實現有關。
4. Jsp下的application內置對象就是上面的ServletContext的一種實現。
其次,getResourceAsStream 用法大致有以下幾種:
第一: 要載入的文件和.class文件在同一目錄下,例如:com.x.y 下有類me.class ,同時有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
總結一下,可能只是兩種寫法
第一:前面有 「 / 」
「 / 」代表了工程的根目錄,例如工程名叫做myproject,「 / 」代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面沒有 「 / 」
代表當前類的目錄
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
③ Java 獲取配置文件路徑
讀取配置文件 , xxx.properties放在webroot/WEB-INF/classes/目錄下
首先將配置文件轉換成InputStream,有兩種方式,原理一樣,都是通過類載入器得到資源:
(1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.properties");
(2) InputStream inputStream =
this.getClass() .getClassLoader().getResourceAsStream( "xx.properties" );
調用對象的getClass()方法是獲得對象當前的類類型,這部分數據存在方法區中,
而後在類類型上調用 getClassLoader()方法是得到當前類型的類載入器,我們知道在Java中所有的類都是通過載入器載入到虛擬機中的,而且類載入器之間存在父 子關系,就是子知道父,父不知道子,這樣不同的子載入的類型之間是無法訪問的(雖然它們都被放在方法區中),所以在這里通過當前類的載入器來載入資源也就 是保證是和類類型同一個載入器載入的。
最後調用了類載入器的getResourceAsStream()方法來載入資源。
(3) 然後載入配置文件,讀取屬性值
Properties prop = new Properties();
prop.load(input);
String value = prop.getProperty("PropertyName");
input.close();
④ java 根據文件獲取文件名及路徑的方法
我寫了一段遍歷某個文件查找指定文件的,你自己改成你需要的功能。
import java.io.File;
import java.util.HashMap;
public class Test1 {
static HashMap<String, String> filelist=new HashMap<String, String>();
/**
* 遞歸方法
* @param path 文件路徑
*/
public static void find(String path){
File file=new File(path);
File[] files = file.listFiles();
//如果文件數組為null則返回
if (files == null)
return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
//判斷是不是文件夾,如果是文件夾則繼續向下查找文件
find(files[i].getAbsolutePath());
} else {
//記錄文件路徑
String filePath = files[i].getAbsolutePath().toLowerCase();
//記錄文件名
String fileName=files[i].getName().toLowerCase();
// System.out.println("---"+strFileName);
filelist.put(fileName, filePath);
}
}
}
public static void main(String[] args) {
//需要遍歷的路徑,也就是你要查找文件所在的路徑
String path="D:\\kpi\\";
find(path);
System.out.println("kpi.9的路徑:"+filelist.get("kpi.9"));
//輸出結果:d:\kpi\kpi.9
}
}
⑤ java怎麼獲取resources下的文件路徑
在Java中,要獲取resources下的文件路徑,你需要明確資源文件的位置並進行適當的路徑處理。首先,你需要通過以下步驟操作:
1. 導入必要的庫,如DocumentBuilderFactory和DocumentBuilder:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
2. 讀取資源文件時,文件路徑通常以"src/main/resources/"開始,接著是文件名。例如,如果你的文件在"config"文件夾下的"settings.xml",路徑會是:
String xmlFilePath = "/config/settings.xml"; // 假設在resources目錄下
3. 將路徑字元串與資源路徑結合起來:
String absolutePath = "classpath:" + xmlFilePath;
InputStream inputStream = ClassLoader.getSystemResourceAsStream(absolutePath);
4. 通過DocumentBuilder解析文件:
Document document = builder.parse(new InputSource(inputStream));
// ...然後進行後續處理,如getElementsByTag()...
記住,處理資源文件路徑時,要確保路徑格式正確,否則可能無法找到文件。以上步驟可以幫助你獲取和處理resources下的文件路徑。