Java 如何在运行时而不是编译时从相对路径引用文件
我的类文件位于:Java 如何在运行时而不是编译时从相对路径引用文件,java,file,Java,File,我的类文件位于: src/test/java/suites/suite/MyClass.java 我还有一个资源文件,位于: src/test/resources/suites/suite/myresource.txt 资源通过以下方法生成: private void generateFile(String filepath) throws IOException { FileOutputStream outputStream = new FileOutputStream(filepat
src/test/java/suites/suite/MyClass.java
我还有一个资源文件,位于:
src/test/resources/suites/suite/myresource.txt
资源通过以下方法生成:
private void generateFile(String filepath) throws IOException {
FileOutputStream outputStream = new FileOutputStream(filepath);
outputStream.write(encodedString);
outputStream.close();
}
我需要在代码中稍后的某个点访问该文件,但我在以下代码行获得了一个NullPointerException
:
new File(getClass().getResource("/suites/suite/myresource.txt").toURI();
这是因为该文件在编译期间不存在。在这种情况下,如何从相对路径引用文件?我使用绝对路径工作,但我需要使其通用。关于:
new File("/suites/suite/myresource.txt").getCanonicalPath();
那么:
new File("/suites/suite/myresource.txt").getCanonicalPath();
无法将文件放入服务器将文件写入/读取到
/whatever
,而不是src
目录中的内容。您的问题并发布生成文件的代码myresource.txt
@Abra,当然可以,请参阅上面的编辑部分,谢谢。为什么不将filepath
参数保存到方法generateFile()
?无法将文件放入服务器将文件写入/读取到/任何,不是src
目录中的内容。您的问题并发布生成文件myresource.txt
@Abra的代码,当然可以,请参阅上面的编辑部分,谢谢。为什么不将filepath
参数保存到方法generateFile()
?我必须在“src/test/resources”前面加上前缀才能解决问题,谢谢。@LP那么这无论如何也解决不了您的问题。它仍然引用运行时不存在的编译时路径。getCanonicalPath()
部分没有添加任何有用的内容。@user207421对不起,您的意思是什么。getCanonicalPath()解析绝对路径名。OP询问他如何引用相关文件。确实是这样。不过我必须加上前缀“src/test/resources”才能解决它,谢谢。@LP那么这并不能以任何方式解决您的问题。它仍然引用运行时不存在的编译时路径。getCanonicalPath()
部分没有添加任何有用的内容。@user207421对不起,您的意思是什么。getCanonicalPath()解析绝对路径名。OP询问他如何引用相关文件。确实如此。