2017-02-18 7 views
3

Я хочу прочитать файл с именем FileofNames.txt в коде. но когда я запускаю этот код, я получаю исключение NullPointerException.Где разместить текстовый файл в Intellij

URL url=ApacheCommonIOExample.class.getResource("src/Files/FileofNames.txt"); 
System.out.println(url.getPath()); 

Итак, мой вопрос заключается в том, что, где я могу поместить файл в IntelliJ, так что я могу читать его из любого источника кода Java. Image of my directory . В настоящее время мой текстовый файл находится в файле src/Files, и я хочу его прочитать из src/org/java.practice/FileName.java.

ответ

4

Предполагая, что вы используете Maven Standard Directory Layout, тогда ресурсы должны быть размещены в /src/main/resources (или /src/test/resources, если необходимо).

Затем загружается с помощью Java-код, что-то вроде этого:

final InputStream stream = this.getClass().getResourceAsStream("/filename.txt"); 
final InputStreamReader reader = new InputStreamReader(stream); 
final BufferedReader buffered = new BufferedReader(reader); 
String line = buffered.readLine(); 

Объяснение

getResource и getResourceAsStream загрузит ресурс, используя тот же ClassLoader используется для загрузки класса контекста. В моем примере this класс; в вашем случае классLoader ApacheCommonIOExample. Возможно, они не совпадают. В моем примере ресурс и класс, как известно, находятся в одном и том же месте, так как именно так он был определен проектом maven и, следовательно, моим упоминанием об этом. В вашем примере, вероятно, будет пытаться загрузить ресурс из того же места, где он был загружен ApacheCommonIOExample.

+0

Этот метод работал, спасибо за это! но когда я пытаюсь запустить этот код, он печатает повторную попытку, можете ли вы сказать мне, почему? 'URL url = ApacheCommonIOExample.class.getResource ("/FileofNames "); Файл файла = новый файл (url.getPath()); if (file.exists()) System.out.print ("существует"); else System.out.print («попробуйте еще раз»); –

 Смежные вопросы

  • Нет связанных вопросов^_^