【问题标题】:Android - listFiles() doesn't list some filesAndroid - listFiles() 没有列出某些文件
【发布时间】:2021-02-24 14:38:11
【问题描述】:

我想制作一个 Android 应用来列出文件及其大小,有点像 Windows 上的 WinDirStat 或 TreeSize,或 Android 上的 DiskUsage。

我试过这个来获取文件列表:

for (file in File("/sdcard").listFiles()) {
    println(file)
}

但它只提供目录

+-----------------------------------------------+
| Expected output       | Output                |
+-----------------------------------------------+
| Alarms                | DCIM                  |
| Android               | Pictures              |
| Audiobooks            | ZEPETO                |
| Aurora                | Audiobooks            |
| DCIM                  | Solid Color Wallpaper |
| Documents             | Snapchat              |
| Download              | Aurora                |
| EnergizedProtection   | aria2                 |
| Movies                | Ringtones             |
| Music                 | TWRP                  |
| Notifications         | Documents             |
| Pictures              | Music                 |
| Podcasts              | Telegram              |
| Ringtones             | Notifications         |
| Snapchat              | WhatsApp              |
| Snapseed              | Download              |
| Solid Color Wallpaper | Movies                |
| TWRP                  | Android               |
| Telegram              | EnergizedProtection   |
| WhatsApp              | Snapseed              |
| ZEPETO                | Podcasts              |
| aria2                 | Alarms                |
| out.txt               |                       |
| thisisafile.txt       |                       |
+-----------------------------------------------+

我有一个<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 和一个适用于 Android 10 的

编辑:

根据 djacobsen13,我使用 file.walk 进行了测试,但它也没有列出 out.txtthisisafile.txt。但它列出了其他 .txt 文件(在缓存或 Android 文件夹的深处),所以我认为这与目录无关,只是出于奇怪的原因没有列出一些文件

编辑 2:

正如blackapps所说,我在这里添加的问题没有描述,我想列出文件夹的所有文件(“/sdcard”这里或其中的任何其他文件夹),但它只返回文件夹而不是文件

我把应用放到了 GitHub 上:https://github.com/victorbnl/andirstat

编辑 3:

它列出了 Android 9 上的所有文件

【问题讨论】:

  • 好的。但所用设备的 Android 版本是什么?
  • out.txt | | | thisisafile.txt 这些看起来很像文件。
  • println(file) 不会打印文件大小。没有。
  • 是的,这些是文件,但这些是预期的输出!而且我还不想要它们的大小,只是为了正确列出文件。不过谢谢你的回答!
  • 版本是Android 10,抱歉忘记了

标签: java android file kotlin


【解决方案1】:

尝试使用这个逻辑来实现你想要做的事情。

File("${Environment.getExternalStorageDirectory()}").walk().forEach {
      println(it)
}

【讨论】:

  • 感谢您的回答,这是个好主意!正如我在主帖中添加的那样,这些也没有列出文件,我认为这是因为 Android 11
【解决方案2】:

您可以使用递归进入目录并从那里获取所有文件。

【讨论】:

  • 和djacoben13一样,也不列出这些文件
【解决方案3】:

我将最小 SDK 设置为 28,以便使用 Android Pie 的权限系统,这更容易。在 Android 11 系统有更多文档记录之前,我将使用它,至少作为临时解决方案

【讨论】:

    猜你喜欢
    • 2011-06-29
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多