Чтение XML-файла внутри jar-пакета
Вот моя структура:
- ком / MyCompany/ValueReader.class
- ком / MyCompany / ресурсы /values.xml
Я могу прочитать файл в моем проекте Eclipse, но когда я экспортирую его в.jar, он никогда не может найти values.xml.
Я пытался использовать ValueReader.class.getResource() и ValueReader.class.getResourceAsStream(), но это не работает.
В чем здесь проблема? Как мне получить File-объект для моего values.xml?
B.
4 ответа
Вы не можете получить File
объект (так как он больше не является файлом, если он находится в.jar), но вы должны иметь возможность получить его в виде потока через getResourceAsStream(path);
, где path
это полный путь к вашему классу.
например
/com/mycompany/resources/values.xml
Вы не можете получить File
для файла, потому что он находится в файле JAR. Но вы можете получить входной поток:
InputStream in = ValueReader.class.getResourceAsStream("resources/values.xml");
getResourceAsStream
а также getResource
преобразовать пакет класса в путь к файлу, а затем добавить аргумент. Это даст поток для файла в пути /com/mycompany/resources/values.xml
,
Это будет работать...
Thread.currentThread().getContextClassLoader().getResource("com/mycompany/resources/values.xml")
Вы можете извлечь jar, затем взять то, что вы хотите, в том же пути к классам, используя:
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new
FileInputStream(zipfile.getCanonicalFile())));