Чтение 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())));
Другие вопросы по тегам