我得到一个这样的文件:
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类中的等价方式是什么?
答案 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
传递给我的班级。