Не удается прочитать файлы из папки ресурсов - PullRequest
0 голосов
/ 03 июня 2018

Окончательное редактирование: теперь код выглядит следующим образом

InputStream is = getClass().getResourceAsStream("/static/master-key.txt");
String masterKey = null;
Scanner scanner = new Scanner(is);
masterKey = scanner.nextLine();
System.out.println("the master key is " + masterKey);

Исходное сообщение

У меня проблема при чтении TXT-файла изresources папка.

Вот как выглядит структура проекта:
projStructure

Когда я вызываю следующий код

System.out.println(getClass().getClassLoader().getResource("static/master-key.txt").getPath());
File mkFile = new File(getClass().getClassLoader().getResource("static/master-key.txt").getPath());

thisчто происходит

/D:/Dropbox/Coding/Intellij%20IDEA/TishenkoKPO/target/classes/static/master-key.txt
java.io.FileNotFoundException: 
D:\Dropbox\Coding\Intellij%20IDEA\TishenkoKPO\target\classes\static\master-key.txt (System cannot find the specified path)

Я много гуглил, но понятия не имею, почему это происходит

Редактировать 1 : часть кода перестроена в соответствии с предложением сообщества (работа сфайл как ресурс)

InputStream is = getClass().getResourceAsStream("static/master-key.txt");
String masterKey = null;
Scanner scanner = new Scanner(is);
masterKey = scanner.nextLine();
System.out.println("the master key is " + masterKey); //successfuly outputs the first line if exists 

Редактировать 2: путь к ресурсу должен начинаться с /

InputStream is = getClass().getResourceAsStream("/static/master-key.txt");

Ответы [ 2 ]

0 голосов
/ 03 июня 2018
InputStream is = getClass().getResourceAsStream("static/master-key.txt");

Это поиск ресурса относительно пакета / каталога класса, который его вызывает.Вполне вероятно, что ресурс действительно может быть найден относительно корня структуры приложения. Для этого добавьте ведущий /, например, так:

InputStream is = getClass().getResourceAsStream("/static/master-key.txt");
0 голосов
/ 03 июня 2018

Попробуйте это

getResource("resources\static\master-key.txt").getPath());

, и если вы нацелены на путь, используйте '\' not '/'.И вы можете попробовать

YourClass.class.getResourceAsStream("resources\static\master-key.txt");

или

YourClass.class.getResourceAsStream("static\master-key.txt");
...