【问题标题】:Android Data pathsAndroid 数据路径
【发布时间】:2011-07-12 04:01:32
【问题描述】:

我正在尝试创建一个包含文件夹 res/raw 的文件,以便我可以使用 listFiles() 以便我可以索引该文件夹中的所有文件...我尝试使用

File folderDirectory = new File("/data/data/com.soundboard/res/raw/");
file[] soundFiles = soundDirectoory.listFiles();

我认为,ListFiles 返回 null,除非我读错了调试信息(soundFiles 路径为 null)

我做错了什么?

【问题讨论】:

  • uhhh 那么我如何告诉 File (java.io) 去哪里看?

标签: android path


【解决方案1】:

你可以在 adb shell 中使用cd /data/data/com.soundboard 来发现那里没有res/raw

通常,.apk 中的res/raw 应该是静态的,因此您可以简单地解压缩.apk 并找出res/raw 中的内容。

【讨论】:

    【解决方案2】:

    res/raw 不能作为文件打开并用作目录。无法为该文件夹中的文件编制索引。

    编辑:当您构建 APK 时,res/raw 目录的内容会被编译成有效的格式。有关更多详细信息,请参阅How does the mapping between android resources and resources ID work?。您可能能做的最好的事情是在您的包R.raw 类上使用反射并列出其所有字段:我从未见过这样做,所以它是否真的有效是任何人的猜测。

    【讨论】:

      【解决方案3】:

      听起来您应该使用 /assets 和 AssetManager。它的行为与文件系统完全一样,因此您可以使用 list。 /assets 和 /res/raw 的用途大致相同,但最大的例外是 /assets 可以作为文件系统进行访问。

      否则,正如 Femi 提到的,您可以使用反射和 get the fields 用于 com.soundboard.R.raw。然后,您可以遍历这些文件并为那里的每个文件生成文件描述符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 2011-03-11
        • 2011-04-02
        相关资源
        最近更新 更多