Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在运行时而不是编译时从相对路径引用文件_Java_File - Fatal编程技术网

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询问他如何引用相关文件。确实如此。