Libgdx Как получить список файлов в каталоге?

Итак, я пытаюсь получить список файлов в каталоге с помощью метода file handle.list(), но он возвращает пустой список, даже если в каталоге есть файлы. Что мне кажется странным, так это то, что он работает на устройстве, но не работает на рабочем столе. Я думаю, что знаю, в чем проблема, но я не знаю, как ее решить. В описании метода говорится: «На рабочем столе дескриптор FileType.Internal для каталога в пути к классам вернет массив нулевой длины», но нет другого метода, кроме этого, так что, ребята, вы думаете, что я могу сделать?


person Leonso Medina Lopez    schedule 01.10.2012    source источник


Ответы (1)


«Внутренние файлы» находятся через путь к классам при запуске на рабочем столе, поэтому нет простого способа «перечислить» каталог в пути к классам. Если вы просто используете рабочий стол для разработки и не возражаете против некоторых хаков, вы можете найти «./bin/» для отсутствующих файлов.

Как это:

FileHandle dirHandle;
if (Gdx.app.getType() == ApplicationType.Android) {
   dirHandle = Gdx.files.internal("some/directory");
} else {
  // ApplicationType.Desktop ..
  dirHandle = Gdx.files.internal("./bin/some/directory");
}
for (FileHandle entry: dirHandle.list()) {
   // yadda ...
}

Подробнее см.: http://bitiotic.com/blog/2012/05/15/libgdx-internal-files-hacks/

Обновление: это больше не правильно. Этот префикс пути «./bin/» не нужно добавлять — он хорошо работает без его добавления и не работает, когда он добавлен. Так что это решение устарело.

person P.T.    schedule 01.10.2012
comment
@iLoveUnicorns - путь Android будет отлично работать и на iOS (я только что проверил). - person sunil; 21.09.2015
comment
В качестве примечания: если вы действительно используете запись в файле, сделайте это так: Gdx.files.internal(entry.file().getAbsolutePath().substring(1)), так как без удаления первого символа (который представляет собой «/») произойдет сбой на Android. - person Cryptoclysm; 08.01.2016
comment
Создание приложения для рабочего стола не позволяет этого. Я не знаю почему, но похоже, что .list() не возвращает никакого FileHandle - person Martacus; 19.09.2018