2013-10-24 6 views
1

Я хотел бы получить список файлов, содержащихся в каталоге, который находится в пакете jar. У меня есть папка «images», внутри которой у меня есть класс Images, который должен загружать все изображения из этого каталога.JAR - Список файлов в папке

В прошлом я использовал MyClass.class.getResourceAsStream("filename"); для чтения файлов, но как читать директорию?

Это то, что я пробовал:

System.out.println(Images.class.getResource("").getPath()); 
System.out.println(new File(Images.class.getResource("").getPath()).listFiles()); 

Я попытался с Images.class.getResource, потому что я должен работать с File и есть не конструктор, который принимает InputStream.

Код производит

file:/home/k55/Java/MyApp/dist/Package.jar!/MyApp/images/ 
null 

Так что найти папку, которую я хочу, чтобы просмотреть список файлов из, но не в состоянии перечислить файлы.

Я читал на других форумах, что на самом деле вы не можете использовать этот метод для папок в архиве jar, так как я могу это сделать?

Обновление: если возможно, я хотел бы читать файлы без необходимости использовать ZipInputStream

+1

http://stackoverflow.com/questions/11516655/how-to-use-classloader-getresources-in-jar-file –

ответ

0

Вы не можете сделать это легко.

Что вам нужно сделать:

  1. Получить путь к файлу фляги. Images.class.getResource ("/ something/that/exists"). GetPath()
  2. Полоса "!/Something/that/exists".
  3. Используйте Zip File System, чтобы просмотреть файл Jar. Это немного взлома.
+0

К сожалению, 'Images.class.getResource ("/"). GetPath() 'fires a 'NullPointerException' – BackSlash

+0

Нет ли способа чтения без' ZipInputStream'? – BackSlash

+0

@BackSlash Нет, нет. Либо «ZipFileSystem», либо «ZipInputStream» с ручной фильтрацией записей. –

Смежные вопросы