Какой путь я использую для моего файла .txt, чтобы заставить FileReader читать его? - PullRequest
0 голосов
/ 06 октября 2018

Я поместил свой файл .txt в папку для пакета (прямо рядом с файлом .java) и у меня есть этот код.Java говорит, что файл не может быть найден.

public static void qnaReader()
    {
        String fileName = "QNA.txt";
        FileReader qna = new FileReader(fileName);
    }

Существует ли определенный формат для пути к файлу?Что я делаю не так?

Ответы [ 3 ]

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

Чтобы приложение могло прочитать файл (практически любой файл), у вас есть два способа сделать это:

Первый метод

Укажите полный путь.Пример: /home/oOVOo/QNA.txt.Если вы работаете в Windows: D: /folder/QNA.txt.Можно использовать / при указании пути в Windows.JVM считывает путь и решает, какой разделитель использовать в зависимости от базовой ОС.

Второй метод

Укажите относительный путь на основе текущего рабочего каталога, видимого приложением.Это означает, что если вы запускаете приложение из каталога или папки с именем «foo», а затем текстовый файл должен находиться в этом каталоге, чтобы указать относительный путь, который затем будет именем файла QNA.txt.

Надеюсь, вы найдете этот ответ полезным.

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

В приведенном примере вы используете относительный путь к файлу.Это актуально, если вы ищете свой файл в «нижней части» classpath или в каталоге, из которого вы запускаете приложение.Например, в проекте maven вы можете поместить свой файл в каталог «src / main / resources», и приведенный выше код должен успешно его найти.

Также вы можете указать абсолютный путь (не рекомендуется) как:

String fileName = "/home/myUser/QNA.txt";
0 голосов
/ 06 октября 2018

Когда вы выполняете вашу программу, Java разрешает относительный путь (которым является QNA.txt), используя текущий рабочий каталог ($PWD в bash).

  • Вам нужно изменить рабочийкаталог для той папки, в которой содержится ваш Java-файл
  • Вы также можете использовать Class::getResourceAsStream, который может вернуть null, если ресурс не найден.

Вы можете прочитать javadoc getResourceAsStream для объяснения того, что он делает и как.

InputStream is = YourClass.class.getResourceAsStream("QNA.txt");
if (null != is) {
  try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); 
       BufferedReader reader = new BufferedReader(isr)) {
    ... 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...