Чтение из файла с Maven

Я пытаюсь создать очень маленькую программу с MAVEN, которая читает из файла, но я явно делаю что-то не так, потому что это дает мне FileNotFoundException.

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

my-app
      src
         main|
             |
             |--java|
             |      |
             |      Main.java
             |
             |--resources|
                         |
                         res.txt

Файл res.txt содержит несколько строк, которые я хотел бы прочитать из Main.java

...
File file = new File("res.txt");
FileReader fr= new FileReader(file);
BufferedReader br = new BufferedReader( fr);
...

Я скомпилирую его с: C:\my-app mvn package

Создает банку под целью. Когда я заглядываю внутрь банку, я вижу, что он содержит Main.class и res.text рядом друг с другом(в том же каталоге)

Тем не менее, когда я пытаюсь запустить его:
java -cp target / my-app-1.0-SNAPSHOT.jar Main

Я даю свое FileNotFoundException, Main.class как-то не видит файл res.txt. Зачем? Где я должен положить res.txt? Что еще я должен настроить?

Любая помощь будет очень ценна.

3 ответа

Я предполагаю, что файл.txt копируется в целевую папку и часть файла JAR?

В этом случае используйте загрузчик ресурсов для извлечения его из пути к классам, а не из файловой системы.

см. чтение файла в classpath для некоторых примеров, как загрузить файлы.

InputStream TokenStream = this.getClass(). GetResourceAsStream ("/ files / Token.xlsx");

XSSFWorkbook wb = new XSSFWorkbook (TokenStream);

XSSFSheet sheet = wb.getSheetAt (0);

Это работает для чтения файла Excel

Вы можете попробовать с

File file = new File(this.getClass().getResource("/res.txt").getFile());

или даже

File file = new File(this.getClass().getResource("/res.txt").toURI());
Другие вопросы по тегам