#java #linux #file #path #filenotfoundexception
#java #linux #файл #путь #исключение filenotfoundexception
Вопрос:
Я полагаю, что это действительно простой вопрос, но я создал JTextField, в котором пользователь может перетаскивать файлы, чтобы не щелкать по дереву swing в течение получаса. Это дает мне строку типа file:///media/raphael/Coding/Test/Test rscs/Test Exercise.asf
(я знаю, что формат файла не является обычным, он сгенерирован из моего собственного кода) Этот путь не работает из-за и file:// в начале. Итак, я создал функцию, которая дает мне это: /media/raphael/Coding/Test/Test rscs/Test Exercise.asf
Но это все еще не работает при подключении BufferedReader br = new BufferedReader(new FileReader(this.path));
, выдавая мне исключение File not found . Странно то, что когда я получаю исключение в intellij, путь отображается как ссылка, которая ведет к файлу, поэтому путь действительно действителен? Что мне нужно сделать, чтобы java распознала путь?
Комментарии:
1. Может быть, BufferedReader ищет относительный путь, но вы указываете глобальный путь?
2. Что я могу использовать вместо этого? (На самом деле я этого не знал, потому что у меня были относительные пути для приложений Windows, которые я позже обменял на глобальные пути, но по какой-то причине это сработало, возможно, из-за разницы в ОС)
Ответ №1:
Проблема заключалась в том, что перетаскивание добавляет дополнительный пробел в конце всего, что было удалено. Это пространство, конечно, не отображается в сообщениях об ошибках или System.out.println();
. Поэтому решение состоит в том, чтобы удалить последний символ строки, если он равен ‘ ‘.