Не удается получить доступ к файлу, расположенному в src / main / resources / - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь получить доступ к файлу, расположенному в ресурсах, и получить null:

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

file = Log.csv

, даже если файл находится непосредственно в ресурсе или в одной из папок под ним.this.getClass().getClassLoader().getResource(file) - возврат null

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Ресурсы не являются действительными File s в файловой системе, но имеют путь к классу *1003*.Они могут быть упакованы в банку с URL-адресом вроде "jar:file://.../xyz.jar!test.csv".Следовательно, используйте 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, без запуска /.Класс имеет URL-адреса относительно каталога пакета класса (но в каталоге src / main / resources) или начиная с / абсолютного пути.

0 голосов
/ 08 октября 2018
this.getClass().getClassLoader().getResource(file).getFile()

захватывает путь до папки resources, если у вас есть папка внутри resources, вы должны указать это вместе с именем файла.

например -

resources -> folder -> test.csv

Затем укажите имя файла:

String file = "folder/test.csv";

Надеюсь, это поможет!

...