Прочитать файл из папки .jar - PullRequest
1 голос
/ 24 июля 2011

Мне нужно прочитать файл, который находится внутри папки jar, следующим образом:

 DataSource coverdata = new FileDataSource(new File("here is the path"));

Как мне узнать точный путь? Я использую библиотеку, поэтому единственный способ получить доступ к файлу - это new File(), без входных потоков.

Ответы [ 3 ]

3 голосов
/ 24 июля 2011

Звоните ClassLoader.getResourceAsStream()::InputStream или ClassLoader.getResource()::URL.

См .:

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)

Файл JAR, содержащий запрошенный файл, должен находиться в пути к классам.

1 голос
/ 24 июля 2011

Вы на неправильном пути.Файл - это только то, что написано непосредственно в файловой системе.Файл внутри jar не является файлом с точки зрения API Java.

Чтобы прочитать этот файл, вам нужно проанализировать JAR с помощью JarInputStream или ZipInputStream, перейти к интересной записи и прочитать из входного потока.Это не сложно сделать, но вы должны написать несколько строк кода.

Другой подход - использование пакета VFS от jakarta.org.Он предоставляет вам единое представление об элементах различных файловых систем, ZIP, TAR и других форматов контейнеров.

0 голосов
/ 24 июля 2011

А как насчет создания нового временного файла с методами InputStream (getResourceAsStream ()), о которых уже говорил @home, и последующего чтения его как обычного файла?

...