我目前正在尝试使用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。提前谢谢。
答案 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());
}
通过递归,您可以获取存储中的所有文件和文件夹。