#java #file
#java #файл
Вопрос:
Недавно я столкнулся с проблемой с getPath().
мой код выглядит примерно так:
File path = new File(Main.class.getResource("/worlds/").getPath());
File[] files = path.listFiles();
Проблема сейчас в том, что если где-то в пути к основному классу есть пробел path.listFiles()
, он вернется null
. Если пробела нет, все работает нормально.
если я напечатаю путь к cmd, я увижу, что каждый пробел заменяется на
Ответ №1:
это неправильный способ преобразования URL-адреса в файл. попробуйте это вместо:
new File(Main.class.getResource("/worlds/").toURI());
Ответ №2:
Не делайте этого. URL-адрес ресурса, возвращаемый getResource(), не обязательно является файлом в файловой системе, который представляет File .
Комментарии:
1. Может быть, но я не вижу лучшего способа прочитать содержимое каталога относительно пути, по которому выполняется программа
2.
new File("./worlds").listFiles()
3. @MasterCassim: Я хотел бы увидеть доказательства этого. Ошибка, описанная в вопросе, связана с неправильным декодированием URL-адреса и попыткой использовать его в качестве пути к файлу. В моем предложении не используется URL-адрес, так как же это может вызвать ту же ошибку?
4. @Simiil в этом нет «может быть», это факт, и тот факт, что вы не видите лучшего способа, его не меняет.
5. Код: System.out.println(«Используя новый файл (./worlds)!»); path = новый файл («./worlds»); System.out.println(«Path = » path); File[] files = path.listFiles(); System.out.println(«Files = » files); Вывод: с использованием нового файла (./worlds)! Путь = .worlds Files = null