Файл может найти файл, но FileReader не может - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь прочитать файл .txt в Java. Я поместил файл в корневую папку проекта.

Когда я сделаю это:

URL url = getClass().getResource("/test.txt");
System.out.println(url);
File file = new File(url.getPath());
System.out.println(file.getAbsolutePath());

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

Scanner scan = new Scanner(new BufferedReader(new FileReader(file)));

Даже когда я помещаю тестовый файл на рабочий стол и использую абсолютный путь, FileReader не может найтифайл.

Я не знаю, что делать, я много чего перепробовал.

Может кто-нибудь мне помочь.

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Ресурсы (Class.getResource) обычно не могут обрабатываться File, это файлы в пути к классам, возможно, упакованные в файл .jar. Вы можете получить читателя следующим образом:

new InputStreamReader(getClass().getResourceAsStream("/test.txt"), StandardCharsets.UTF_8)

Выше используется InputStream ресурса. Поскольку вы знаете кодировку файла, укажите его для Reader.

То, что он работал, было проблемой рабочего каталога в сочетании с настройками вашей IDE.

0 голосов
/ 14 октября 2019

Здесь можно попробовать две вещи:

  1. Использовать полный путь вместо относительного пути, использовать полный путь, например что-то вроде "/Users/BlueDragon709/Desktop/test.txt" вместо "/test.txt"

  2. Если это не удается, проверьте права доступа к файлу.

Когда вы в настоящее время используете Файл, вы не пытаетесь получить к нему доступ, пока не создадите экземпляр Сканера, чтобыон не потерпит неудачу, пока вы не нажмете эту строку кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...