获取Java类中文件的真实路径

时间:2012-09-27 11:38:34

标签: java path filepath

我得到一个这样的文件:

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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的路径。

答案 2 :(得分:0)

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