Итак, я пытаюсь получить список файлов в каталоге с помощью метода file handle.list(), но он возвращает пустой список, даже если в каталоге есть файлы. Что мне кажется странным, так это то, что он работает на устройстве, но не работает на рабочем столе. Я думаю, что знаю, в чем проблема, но я не знаю, как ее решить. В описании метода говорится: «На рабочем столе дескриптор FileType.Internal для каталога в пути к классам вернет массив нулевой длины», но нет другого метода, кроме этого, так что, ребята, вы думаете, что я могу сделать?
Libgdx Как получить список файлов в каталоге?
Ответы (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
@iLoveUnicorns - путь Android будет отлично работать и на iOS (я только что проверил).
- person sunil; 21.09.2015
В качестве примечания: если вы действительно используете запись в файле, сделайте это так:
Gdx.files.internal(entry.file().getAbsolutePath().substring(1))
, так как без удаления первого символа (который представляет собой «/») произойдет сбой на Android.
- person Cryptoclysm; 08.01.2016
Создание приложения для рабочего стола не позволяет этого. Я не знаю почему, но похоже, что .list() не возвращает никакого FileHandle
- person Martacus; 19.09.2018