Попытка получить файлы из каталога, используя list () или listFiles () в Java - PullRequest
2 голосов
/ 25 февраля 2010

Я работаю над небольшой базовой программой с графическим интерфейсом, которая получает файлы из моих ресурсов, получает имена файлов и помещает их в поле со списком. например, у меня просто есть файл внутри того же пакета, который называется images и пытаюсь получить имена файлов. я получаю файл с помощью getResoure (), например,

java.net.URL url = FileDemo.class.getResource("images");

но когда я пытаюсь получить файлы внутри каталога

  File urlfile = new File(url.toString());

  String[] files = urlfile.list();

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

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

У меня вопрос, защищены ли файлы внутри проекта или нет доступа к ним с помощью list () и listFiles (), или я что-то не так делаю? Также я запустил тот же сценарий на своем школьном компьютере, на котором у них работает windows 7, сработавший выше код Но когда я запустил его на своем Mac и даже на двух машинах win xp, он просто не работал? почему это?

Надеюсь, в этом есть смысл, я просто застрял здесь еще новичок в Java

Заранее спасибо.

1 Ответ

2 голосов
/ 25 февраля 2010

Класс getResource(String) возвращает URL изображениям, но нет гарантии, что это URL-адрес файла (начиная с "file:"). Если ваш класс встроен в JAR-файл, это, безусловно, не будет иметь место, поэтому в некоторых ситуациях он терпит неудачу, а в других нет.

Если вы намереваетесь сделать часть файловой системы видимой для пользователя, я бы рекомендовал вообще избегать getResource, что обычно более полезно, когда ваше приложение хочет найти и загрузить ресурсы, такие как значки или файлы конфигурации. .

Вместо этого вы можете использовать JFileChooser, который является богатым компонентом Swing для навигации по файловой системе и выбора файлов.

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