Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 从资源目录读取文件时发现FileNotFound异常_Java - Fatal编程技术网

Java 从资源目录读取文件时发现FileNotFound异常

Java 从资源目录读取文件时发现FileNotFound异常,java,Java,我试图用下面的代码从资源目录中读取一个文件 new FileInputStream(new File(getClass().getClassLoader().getResource(keyFile).getFile())) 在运行时获取以下异常 java.io.FileNotFoundException:文件:\D:\WorkSpace\server\target\server.jar\BOOT-INF\classes\config\key.pgp(文件名、目录名或卷标语法不正确) 位于jav

我试图用下面的代码从资源目录中读取一个文件

new FileInputStream(new File(getClass().getClassLoader().getResource(keyFile).getFile()))
在运行时获取以下异常

java.io.FileNotFoundException:文件:\D:\WorkSpace\server\target\server.jar\BOOT-INF\classes\config\key.pgp(文件名、目录名或卷标语法不正确)
位于java.io.FileInputStream.open0(本机方法)
位于java.io.FileInputStream.open(未知源代码)
位于java.io.FileInputStream。(未知源)

由此:

java.io.FileNotFoundException:文件:\D:\WorkSpace\server\target\server.jar

看起来代码是从jar内部运行的,并且正在jar中查找文件

有两种选择:

1.)将文件添加到.class文件所在的jar中,并使用类路径访问文件(不要忘记前导/):/com/mycompany/myproject/files/myfile.txt

2.)使用文件的绝对路径: “D:\WorkSpace\server\target\BOOT-INF\classes\config\key.pgp”

来自此:

java.io.FileNotFoundException:文件:\D:\WorkSpace\server\target\server.jar

看起来代码是从jar内部运行的,并且正在jar中查找文件

有两种选择:

1.)将文件添加到.class文件所在的jar中,并使用类路径访问文件(不要忘记前导/):/com/mycompany/myproject/files/myfile.txt

2.)使用文件的绝对路径:
“D:\WorkSpace\server\target\BOOT-INF\classes\config\key.pgp”

根据您试图获取的资源在jar中的位置,您应该使用相对路径来获取资源。您还可以通过以下方法直接以InputStream的形式询问资源,从而完全跳过文件对象:


根据您试图获取的资源在jar中的位置,您应该使用相对路径来获取资源。您还可以通过以下方法直接以InputStream的形式询问资源,从而完全跳过文件对象:


正如上面所说:文件名、目录名或卷标语法不正确。请检查语法。如果没有,请共享keyFile变量实际声明的代码。。当我在jar中检查时,该文件存在…keyFile的值为config\key.pgp…是否有其他方法从jar中读取该文件?我刚刚发布的答案中的选项1应该能够从jar中读取该文件。@basky请参阅下面的我的答案。正如它所说的:文件名,目录名或卷标语法不正确。请检查语法。如果没有,,请共享keyFile变量声明的代码。当我在jar中检查时,文件存在。keyFile的值为config\key.pgp。从jar中读取文件有什么不同的方法吗?我刚刚发布的答案中的选项1应该能够从jar中读取文件。@basky看到下面我的答案。你尝试过类似的方法吗getClass().getClassLoader().getResource(“/config/key.pgp”)您是否尝试过类似getClass().getClassLoader().getResource(“/config/key.pgp”)的东西,但应该指出,
文件和
文件输入流
用于物理文件系统,而不是类路径上的资源“文件”,可能在一个jar内。但应该指出,
File
FileInputStream
是用于物理文件系统的,而不是类路径上的资源“文件”,可能在一个jar内。
InputStream in = getClass().getResourceAsStream("/config/key.pgp");