Чтение файлов в директории в jar-файле - PullRequest
1 голос
/ 26 марта 2012

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

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

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 находится в главной папке основной папки / classes / patches / models, но файл класса считывает из папки классов, поэтому у меня это так ./patches/models/+i+.dat

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

Ответы [ 2 ]

1 голос
/ 26 марта 2012

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

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

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

У вас также есть этот ресурс и дубликат, который я добавил.

1 голос
/ 26 марта 2012

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

Вам нужно использовать

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...