Есть ли способ в Java создать экземпляр File на ресурсе, полученном из jar через загрузчик классов?
Мое приложение использует некоторые файлы из jar (по умолчанию) или из каталога файловой системы, указанного во время выполнения (пользовательский ввод). Я ищу последовательный способ
а) загрузки этих файлов в виде потока
б) перечисления файлов в определяемом пользователем каталоге или каталоге в банке соответственно
Изменить: По-видимому, идеальным подходом было бы вообще держаться подальше от java.io.File. Есть ли способ загрузить каталог из пути к классам и перечислить его содержимое (файлы / объекты, содержащиеся в нем)?
источник
InputStream
вы получаете отgetResourceAsStream
остановок для извлечения байтов ресурса после этого размера и вместо этого возвращает 0, если он содержится в сжатой файловой системе, такой как банка. В этом случае вы, кажется, вынуждены использоватьgetResource
и загружать файл независимо от этого.read
методом, определяющим, сколько данных читать (я не знал об этом). И кажется, что читается весь файл, если читаемый файл находится в обычной папке. Если файл находится в банке, потому что он был упакован, он читает только его части.InputStream
, если вы хотите прочитать весь ресурс, вы должны зацикливаться, пока неread
вернет -1.У меня была такая же проблема, и я мог использовать следующее:
источник
FileSystem
объект и получитьPath
от него информацию. Тогда вы можете читать это как обычно. (см. stackoverflow.com/a/22605905/1876344 )Вот небольшой код из одного из моих приложений ... Сообщите мне, подходит ли он вам. Вы можете использовать это, если знаете, какой файл хотите использовать.
Надеюсь, это поможет.
источник
toURI()
получится.Надежный способ создать экземпляр File на ресурсе, полученном из jar, - это скопировать ресурс в виде потока во временный File (временный файл будет удален при выходе из JVM):
источник
Попробуй это:
Доступны другие методы, например см. Здесь: http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html
источник
Это один из вариантов: http://www.uofr.net/~greg/java/get-resource-listing.html
источник