搜索所有SD卡中的文件

乔治·米里尼(Giorgio Mirini)

我正在尝试在所有带有“ .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,只是为了简化此说明)

  1. 输入scan(“ / sdcard”)
  2. scan(“ / sdcard”)将mFile设置为/ sdcard中的文件列表。说{“ / sdcard / folder1”,“ / sdcard / folder2”}。
  3. scan(“ / sdcard”)调用scan(“ / sdcard / folder1”),因为它是mFile中的第一个元素。
  4. scan(“ / sdcard / folder1”)将mFile设置为/ sdcard / folder1中的文件列表。说没有。
  5. scan(“ / sdcard / folder1”)返回,因为mFile.length为0,k为0,且0 <0为非。
  6. scan(“ / sdcard”)返回,因为mFile.length为0,k为1,且1 <0为非。

请注意,它从未到达/ sdcard / folder2。

要修复您的代码,您需要做的就是mFile在内部创建一个局部变量scan

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在SD卡中删除文件

Chrome DevTools搜索网站中的所有javascript文件

搜索并替换linux目录中所有文件中的文本

SD卡上的目录中的文件数量是否有限制?

如何将带有日期的文件存储到SD卡中?

Atom,搜索所有文件

如何在Visual Studio中实际搜索所有文件

在Sublime Text 3中搜索项目中的所有文件

在Vim中搜索和替换所有项目文件

在Perforce Visual Client的所有文件架中搜索文件

在vbscript中包含所有路径以搜索文件的变量

在Git远程所有分支中搜索文件内容

如何在Vim中所有打开的选项卡中搜索当前单词?

在AndAR的sd卡中具有.patt文件

在战争中的所有文件中搜索字符串

在VIM中的撤消树中搜索文件的所有版本

如何显示Android文件系统中所有文件夹的列表特别是SD卡

在Atlassian Stash中的所有文件中搜索文本

如何使用某些关键字在SD卡中搜索文件?

获取SD卡中的文件夹和文件列表

sd卡打开后,如何将在线存在的所有图像保存到我的sd卡中?

我拍摄的所有照片都会保存在SD卡中,但除非重启,否则无法查看

在所有.txt文件中搜索字符串

SD卡中的所有音乐文件名都可以在TextView中显示,但不能在ListView中显示吗?

在所有驱动器中搜索文件

搜索文件列表中的所有下载文件

如何在目录中搜索所有以“ ABC”开头的文件?

在 tgz 中的所有文件中搜索文本

Kotlin:从 SD 卡中的文件夹中读取所有文件