使用外部目标列出Libgdx目录中的所有文件

时间:2017-03-04 23:38:24

标签: java android libgdx filesystems

我目前正在尝试使用libgdx文件系统列出目录中的所有文件,当我进入我想要查看的目录时,列表函数开始返回长度为0的列表,即使我很肯定它不是空。

我在我的Android手机上测试,并且一步一步地深入手机。这些是我用来检查列表的行以及它返回的项目数。请让我知道我做错了什么或者周围的工作谢谢你。

Gdx.files.absolute(".").list().length()               //Returned 63
Gdx.files.absolute("./storage").list().length         //Returned 4
Gdx.files.absolute(./storage/emulated).list().length  //Returned 0

路径./storage/emulated肯定不是空的。我是否需要获得访问此区域的特殊权限?请lmk。提前谢谢。

1 个答案:

答案 0 :(得分:2)

开始之前在Android进行任何与文件IO相关的工作之前,如果没有在用户运行时取得权限,那么对于Android来说,你的targetSdkVersion小于23。对于当前的targetSdkVersion,检查你的default build.gradle文件的defaultConfig,如果没有出现他们的check AndroidManifest.xml文件。

将此权限添加到AndroidMainfest.xml文件。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我理解外部目的地是我们保留自己的数据的地址,例如视频,音乐等。

Gdx.files.getExternalStoragePath()在Android和桌面上的用户目录中提供路径/storage/emulated/0/,如C:\Users\Abhishek Aryan\

我们想要外部存储内的所有文件(外部存储并不意味着SD卡)。 /storage/emulated/0/代表内置存储。

FileHandle dirHandle = Gdx.files.external("/");    

for (FileHandle entry: dirHandle.list()) {
     System.out.println(entry.toString());
}

通过递归,您可以获取存储中的所有文件和文件夹。