我正在尝试在所有带有“ .apk”扩展名的SD卡中搜索文件。我已经写了这种方法。
public void scan(File file) {
mFile = file.listFiles();
if(mFile != null) {
for(int i=0;i<mFile.length;i++) {
if(mFile[i] != null) {
if(mFile[i].isDirectory()) {
scan(mFile[i]);
} else {
if(mFile[i].getName().endsWith(".apk")) {
lista.add(mFile[i].getName());
}
}
}
}
}
}
我作为参数传递
scan(Environment.getExternalStorageDirectory());
问题是,如果我将一些apk文件放入SD卡,则阵列列表大小为0,并且此方法未检测到一个apk文件。为什么?我的目标是扫描所有SD卡以搜索.apk文件。
因为mFile
是一个字段,所以对的每个调用scan
都不会获得的自己的“副本” mFile
。
当您调用scan(“ / sdcard”)时,会发生以下情况:(我假设参数是filename而不是a File
,只是为了简化此说明)
请注意,它从未到达/ sdcard / folder2。
要修复您的代码,您需要做的就是mFile
在内部创建一个局部变量scan
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句