2012-03-25 2 views
1

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

Итак, вот метод у меня есть ....

public void preloadModelsTwoOLD() { 
    String slash = System.getProperty("file.separator"); 
    File file = new File("."+ slash +"Patches" + slash+"Models"+slash); 
    File[] fileArray = file.listFiles(); 
    for(int y = 0; y < fileArray.length; y++) { 
     String s = fileArray[y].getName(); 
     if (s != "") { 
     byte[] buffer = readFile("."+ slash +"Patches" + slash+"Models"+slash+""+s); 
     Model.method460(buffer, Integer.parseInt(getFileNameWithoutExtension(s))); 
     //System.out.println("Read model: " + s); 
     } 
    } 
} 

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

file.java находится в основной папке основных папки/классы/патчи/модели но файл класс считывает из папки классов так что я это так ./patches/models/+i+.dat

любых идей относительно того, почему он не читает его правильно и как это сделать, чтобы он работал, когда в формате jar, если не в обоих форматах? любая помощь приветствуется.

+0

Возможный дубликат [Как указать файлы в файле JAR?] (Http://stackoverflow.com/questions/1429172/how-do-list-the-files-inside-a-jar- файл) – Snicolas

ответ

1

Файлы в JAR рассматриваются как ресурсы.

Вы должны использовать

InputStream fileStream = getClass().getResourceAsStream("dir1/dir2/file1") 

и затем использовать API-интерфейсы InputStream для чтения из него

+0

Как я могу использовать его в этом методе? – Travs

+0

Итак, вы можете использовать загрузчик классов, чтобы получить список ресурсов в этом «пакете». classloader.getResources() должен предоставить вам список. См snippets.dzone.com/posts/show/4831 для примеров по использованию –

1

Вы не должны использовать файл таким образом: путь является абсолютным или относительно каталога, вы выполнение java из.

предпочитают использовать

URL url = getClass().getResource("<path relative to the dir containing the .class file of invoking class>"); 
File file = new File(url.toURI()); 

Вы также this resource и дубликата я добавил.

+0

ладно, так что теперь у меня есть этот \t \t InputStream FileStream = GetClass(). GetResourceAsStream (" "+ Вырубка +" заплата" + слэш + "Модель" + слэш); \t \t Файл [] fileArray = fileStream.listFiles(); однако listFiles() 's не является допустимым методом для ресурсов, какими были бы ресурсы? – Travs

+0

Извините, я обновил свой ансвер – Snicolas

Смежные вопросы