无法访问src / main / resources /下的文件

时间:2018-10-08 06:29:28

标签: java getresource

我正在尝试访问资源下的文件并获取null

 File propertiesFile = new File(this.getClass().getClassLoader().getResource(file).getFile());

file = Log.csv

即使该文件直接位于资源下,也位于其下的文件夹之一下。 this.getClass().getClassLoader().getResource(file)-返回null

2 个答案:

答案 0 :(得分:1)

this.getClass().getClassLoader().getResource(file).getFile()

捕获到resources文件夹的路径,如果您在resources内有文件夹,则必须提供该路径以及文件名。

例如-

resources -> folder -> test.csv

然后指定文件名:

String file = "folder/test.csv";

希望这会有所帮助!

答案 1 :(得分:0)

资源在文件系统上不是真实的File,而是在类路径上。可以将它们包装在带有"jar:file://.../xyz.jar!test.csv"之类的URL的jar中。因此,请使用InputStream。

InputStream in = getClass().getResourceAsStream("/test.csv");
String userHome = System.getProperty("user.home");
Path path = Paths.get(userHome, "test2.csv");
Files.copy(in, path, StandardCopyOption.REPLACE_EXISTING);

资源应视为只读;因此将它们用作模板,初始空文件,只读数据等。

ClassLoader在根src / main / resources下仅具有绝对路径,而没有启动/。该类具有相对于该类的包目录(但在src / main / resources下)的URL,或者以/开头的绝对路径。