2012-09-27 36 views
6
一個

文件的真實路徑我得到這樣一個文件:獲取一個Java類

String myFile = "D:/dev/workspace/MyProject/WebContent/stats/stats.csv"; 
File statsFile = new File(myFile); 

但我想只有爲stats/stats.csv的相對路徑。我不想在我的代碼中編寫完整的路徑。

在一個servlet,我做這種方式:

File statsFile = new File(this.getServletContext().getRealPath("/") + "stats/stats.csv"); 

但這裏是不是在servlet中。那麼,java類中的等價方法是什麼?

回答

2

你應該把它放在CLASSPATH中,並從使用getResourceAsStream()獲得的InputStream中讀取它。這是訪問文件的路徑無關的方式。

+0

他說他不想在Servlet中使用它 – Razvan

+0

所以從運行時開始。 – duffymo

+1

可以通過'SomeApplicationClass.class.getResourceAsStream()獲得它' –

0
String basePath = "D:/dev/workspace/MyProject/WebContent"; 
String absolutePath = "D:/dev/workspace/MyProject/WebContent/stats/stats.csv"; 

String relativePath = new File(basePath).toURI(). 
         relativize(new File(absolutePath).toURI()).getPath(); 

System.out.println(relativePath); // stats/stats.csv 

basePath的路徑,相對於要得到Relative Path

+0

實際上,我搜索一種方法來查找'basePath'而不寫它。 – Emilie

+0

@Jim ..然後你的工作仍然減少..我在處理我的一個項目時也面臨同樣的問題..然後只有我發現我可以這樣做.. –

0

我找到了一個解決方案。 我可以使用我的JSP來使用File statsFile = new File(this.getServletContext().getRealPath("/") + "stats/stats.csv"),然後將statsFile傳遞給我的課程。