先上代码
private static final File PATH = new File(Environment.getExternalStorageDirectory()+File.separator);
ArrayList<String> data = new ArrayList<>();
public void createlist(File PATH) {
File[] files = PATH.listFiles();
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
for (File f : files) {
if (!f.isDirectory()){
data.add(f.getName());
}else {
Toast toast = Toast.makeText(this,"改文件为目录文件",Toast.LENGTH_LONG);
toast.show();
}
}
}else {
Toast toast = Toast.makeText(this,"SD卡挂载失败",Toast.LENGTH_SHORT);
toast.show();
}
}
在这段代码中,经过判断语句if (!f.isDirectory())只会弹出else中的toast消息。也就是说我的files只能读到文件目录,而读不到其他类型的文件比如.txt,.doc之类。
我也试过打印一些关于files.length发现它只计算了文件夹的数量而没有计算其他类型的文件数量。
确定里面有其他的非文件夹的文件吗?
可以把文件夹依次递归调用 查找文件
那应该不会呀
用androidstudio自带的Device File Expore 看一看 里面到底有哪些文件呢?
不可能,你肯定存错目录了,这个方法会返回所有的文件,包括文件和文件夹。
建议再多确认你存放文件的目录
去掉了判断是否为目录的语句,真机演示了一下,只能加载出目录文件的名字。
这是我根目录下的除了文本目录以外的其他文件,但是这些文件的名字都没有返回的。
看完都没有准确的答案 :)
我来答一下吧。
这是由于Android为了安全性做的限制,因此暂时的解决方式就是将APK的targetSdkVersion降低,比如改为28.