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

时间:2018-12-28 12:00:04

标签: 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(文件名,目录名或卷标语法为错误)   
在java.io.FileInputStream.open0(本机方法)   
在java.io.FileInputStream.open(未知来源)   
在java.io.FileInputStream。(未知来源)

2 个答案:

答案 0 :(得分:3)

根据您要获取的资源在jar中的位置,您应该使用相对路径来获取资源。您还可以通过使用ResourceAsStream方法直接将资源作为InputStream来询问来完全跳过File对象:

InputStream in = getClass().getResourceAsStream("/config/key.pgp");

答案 1 :(得分:1)

从此:

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

代码看起来像是从罐子内部运行的,正在罐子中寻找文件。

几个选项:

1。)将文件添加到您的.class文件所在的jar中,并使用类路径获取文件(不要忘记开头的/):/com/mycompany/myproject/files/myfile.txt

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