2015-12-16 7 views
0

Я работаю над игрой libgdx с использованием плитки для создания карт на экране выбора уровня, который я читал во всех файлах в папке карты и подсчитывал файлы, заканчивающиеся на .tmx, чтобы узнать, сколько которые я должен сделать.listFiles not workig после экспорта в jar

Все это работает нормально, но когда я пытаюсь экспортировать проект в банку, используя команду intellij gradle dist, он просто перестает работать.

Я предполагаю, что он меняет путь к файлам или что-то, когда он экспортирует его, но я понятия не имею, как его исправить.

Вот код, который считывает файлы

 new File("maps").listFiles(new FilenameFilter() { 
     @Override 
     public boolean accept(File dir, String name) { 
      if (name.endsWith(".tmx")) { 
       numberOfLevels++; 
      } 
      return true; 
     } 
    }); 
+0

Является ли папка 'maps' внутри JAR? – Tunaki

+0

Где твои карты? 'new File (« maps »)' будет искать каталог в текущем рабочем каталоге, который, как я подозреваю, не является тем, что вы хотите – tddmonkey

+0

Папка карт находится внутри JAR, она находится в «Game -> core -> assets -> maps « – rivaldragon1

ответ

0

Для подсчета количества .tmx файлов в банке, попробуйте рассматривать его как молнии и подсчета количество представляющих интерес файлов:

List<String> classNames = new ArrayList<String>(); 
ZipInputStream zip = new ZipInputStream(new FileInputStream("/path/to/jar/file.jar")); 
int numberOfLevels=0; 
for (ZipEntry entry = zip.getNextEntry(); entry != null; entry = zip.getNextEntry()) { 
    if (!entry.isDirectory() && entry.getName().endsWith(".tmx")) { 
     numberOfLevels++; 
    } 
} 
+0

Вы понятия не имеете, как долго я искал поисковую систему, пытаясь найти ответ на этот вопрос, большое вам спасибо, что вы просто избавили меня от совершенно безумного от этого! – rivaldragon1

+0

Не беспокойтесь, рад помочь! –

0

Чтобы получить доступ к «карты», как, что она не может быть включена в файл банку, но он должен быть в той же директории, как фляга. С new File(...) вы получаете доступ к файловой системе компьютера, который не может найти файл «карты», как он компилируется в файл JAR

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