6

我得到一个这样的文件:

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类中的等效方式是什么?

4

3 回答 3

2

您应该将它放在 CLASSPATH 中并从InputStream获取的 using中读取它getResourceAsStream()。这是访问文件的与路径无关的方式。

于 2012-09-27T11:39:35.287 回答
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

于 2012-09-27T12:13:18.893 回答
0

我找到了解决方案。我可以使用我的 JSP 来使用File statsFile = new File(this.getServletContext().getRealPath("/") + "stats/stats.csv"),然后传递statsFile给我的班级。

于 2012-09-27T14:10:40.270 回答