我正在尝试访问资源下的文件并获取null
:
File propertiesFile = new File(this.getClass().getClassLoader().getResource(file).getFile());
file = Log.csv
即使该文件直接位于资源下,也位于其下的文件夹之一下。
this.getClass().getClassLoader().getResource(file)
-返回null
答案 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,或者以/
开头的绝对路径。