【发布时间】:2021-03-26 11:53:18
【问题描述】:
我正在尝试获取目录中的所有文件和子目录并显示它们的名称。这是我使用的代码:
File internalStorageDir = new File(Environment.getExternalStorageDirectory().getPath());
File[] files = internalStorageDir.listFiles();
ArrayList<String> fileNames = new ArrayList<>();
for(int i=0; i< files.length; i++){fileNames.add(files[i].getName());}
指定目录(Environment.getExternalStorageDirectory())包含文件和子目录,而listFiles()只返回子目录。这段代码有什么问题?已授予读取外部存储的权限。
【问题讨论】:
-
您能打印出您正在访问的特定路径并与同一路径上的 ls 输出进行比较吗?
-
正在测试哪个版本的 Android?顺便说一句,您可以通过将
new File(Environment.getExternalStorageDirectory().getPath())替换为new Environment.getExternalStorageDirectory()来简化此代码。 -
我尝试在搭载 Android 10 的 AVD 和搭载 Android 11 的真实设备上进行测试。结果是一样的。
-
外部存储的根目录只包含公共目录是很正常的。
-
File internalStorageDir = new File(Environment.getExternalStorageDirectory().getPath());你可以简化这段代码:File internalStorageDir = Environment.getExternalStorageDirectory();;-)