2012-01-10 5 views
3

У меня есть файл Jar, который я создал с помощью сторонней библиотеки. Когда я упакованный файл банку, я в том числе несколько XML-файлов внутри него в папке данныеКак читать файлы в папке inputstream

data 
    - file1.xml 
    - file2.xml 
    - file3.xml 

Теперь я хотел прочитать папку внутри файла банку и согласно документации 3 party library Я мог бы получить загрузчик классов и прочитать папку в качестве входного потока, как это.

ClassLoader clsLoader = myService.getClassLoader(); 
InputStream accountsStream = clsLoader.getResourceAsStream("data"); 

Вопрос в том, как я могу перечислить все файлы из входного потока и разобрать его один за другим?

Благодаря

EDIT Добавлена ​​информация:

How do I access resources that I put into my service or module archive file? 

http://axis.apache.org/axis2/java/core/faq.html#b1

К сожалению, этот вопрос должен быть специфическими для Apache Axis, но я путать немного, если это Явный вопрос.

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

Шаги в моем коде будут скрыты.

  1. Получить InputStream в папку
  2. Список всех файлов из этого InputStream
  3. Прочти один на один
+0

Что третья библиотека партии вы используете, и/или вы можете дать это ссылка на его документацию, а? – jefflunt

+0

Привет, его ось Apache. Http: //axis.apache.org/axis2/java/core/faq.html # b1 Когда я упаковываю свой сервис, я хотел, чтобы он получил доступ к папке в архиве модуля. благодаря –

ответ

2

(Sorry - игнорировать мой ответ - вот лучше один :)

How do I list the files inside a JAR file?

Это довольно хрупкое решение, но вы мог просто прочитать свой собственный банку файл:

File file = new File(System.getProperty("user.dir") + "/jarname.jar"); 
JarFile jfile = new JarFile(file); 
Enumeration e = jfile.entries(); 
while (e.hasMoreElements()) { 
    ZipEntry entry = (ZipEntry)e.nextElement(); 
    String path = entry.getName(); 
    if(path.startsWith("/path/within/jarfile/") && path.endsWith(".xml")) { 
     MyClass.loadResourceAsStream(path); 
    } 
} 

Что делает его хрупким, что это зависит от вашей jarfile имеющие определенное имя, не будучи внутри другого jarfile, и так далее. Я уверен, что есть более элегантный способ ...

1

Когда я упакованный файл банку, я в том числе несколько XML-файлов внутри него в папке данных

  1. включают также список (например) data/listOfXML.txt в то же время.
  2. Получить список как ресурс.
  3. Прочитайте список, чтобы получить имена файлов XML