我需要为文件夹中的每个文件获取一个LibGDX FileHandle。我可以使用
来做到这一点FileHandle [] filehandles;
filehandles=Gdx.files.external("/").list();
获取文件夹中的所有文件。但它没有给我子文件夹。我已经考虑在循环中使用if语句,该循环遍历文件夹中的所有内容,检查子文件夹然后也列出它们,但是id需要另一个数组,我不能确定有多少生病需要。它也是无穷无尽的。
答案 0 :(得分:3)
这是一个递归解决方案。我没有测试它,但它应该工作我想:
public void getHandles(FileHandle begin, Array<FileHandle> handles)
{
FileHandle[] newHandles = begin.list();
for (FileHandle f : newHandles)
{
if (f.isDirectory())
{
Gdx.app.log("Loop", "isFolder!");
getHandles(f, handles);
}
else
{
Gdx.app.log("Loop", "isFile!");
handles.add(f);
}
}
}
以getHandles(Gdx.file.external("/"))
开头。根目录的处理程序。
只需使用一个数组。将它传递给方法,方法将用所有处理程序填充它。
更新: 你需要用正确的手柄调用它!因为如果您使用的是Android设备或桌面,这一点很重要。根据这个问题Libgdx How to get a list of files in a directory?
这样称呼:
FileHandle dirHandle;
if (Gdx.app.getType() == ApplicationType.Android)
{
dirHandle = Gdx.files.internal("data");
}
else
{
dirHandle = Gdx.files.internal("./bin/data");
}
Array<FileHandle> handles = new Array<FileHandle>();
getHandles(dirHandle, handles);
如果您使用内部。否则使用绝对而不是外部。如果你传递一个空的FileHandle它将无法正常工作。
桌面(Windows,Linux,Mac OS X)
在桌面操作系统上,文件系统是一大块内存。文件可以 使用相对于当前工作目录的路径引用 (执行应用程序的目录)或绝对路径。 忽略文件权限,文件和目录通常是可读的 并且可以被所有应用程序写入。
此外:
<强>外部强>
外部文件路径相对于SD卡根目录 桌面上的Android和到当前用户的主目录 系统
使用内部 绝对以及外部检查功能。如上所述,请注意外部相对于您的用户目录!例如C:/Users/user/...
只需将右手柄传递给它。