我有一个完整的文件夹,我想在R.raw文件夹中,所以它看起来像这样:
raw/thor/myfirstfile.jpg
raw/thor/mysecondfile.m4a
raw/thor/mythirdfile.json
raw/batman/myfirstfile.jpg
raw/batman/mysecondfile.m4a
raw/batman/mythirdfile.json
这样我就可以将文件夹复制到:
/externalSD/.../themes/thor/myfirstfile.jpg
/externalSD/.../themes/thor/mysecondfile.m4a
/externalSD/.../themes/thor/mythirdfile.json
/externalSD/.../themes/batman/myfirstfile.jpg
/externalSD/.../themes/batman/mysecondfile.m4a
/externalSD/.../themes/batman/mythirdfile.json
我无法将文件夹放入R.assets,因为包含这些资源的项目是一个库,我需要从应用程序项目中访问这些文件。
将所有文件简单地放入raw / assets / drawable / etc目录也不是一个选项,因为主题本质上是设计用于搜索SD卡上的目录的模板,其想法是可以下载更多主题。
目前我的解决方案是将文件夹打包成zip文件:
raw/thor.zip
raw/batman.zip
使用以下方式访问它们:
InputStream fileStream = context.getResources().openRawResource(rawResource);
然后将应用程序的第一次运行解压缩到SD卡上 - 但速度非常慢。它(希望)能够更快地复制文件夹而不是解压缩文件夹。
我的问题是如何从R.raw资源中复制整个文件夹?
答案 0 :(得分:0)
我有一个完整的文件夹,我希望它在R.raw文件夹中,以便它看起来像这样
不支持。您不能在res/raw/
中拥有子目录。 assets/
可以替代res/raw/
。
我无法将文件夹放入R.assets,因为包含这些资源的项目是一个库,我需要从应用程序项目中访问这些文件。
Android库项目现在支持资产,至少在Android Studio / Gradle for Android上。我最近没在Eclipse上试过它们。
我的问题是如何从R.raw资源中复制整个文件夹?
由于您无法将整个文件夹放入res/raw/
,因此无法将其复制出来。
欢迎您发明自己的名称修改算法(例如raw/theme___thor___myfirstfile.jpg
),只要您坚持使用Java数据成员命名规则即可。然后,您可以在将其写出时将这些文件名转换为相对路径。您需要使用反射迭代R.raw
的静态数据成员,以找出名称及其相应的资源ID值。
但是,我建议您首先尝试资产,因为它可能比您预期的更好。或者,如果此库纯粹供您自己使用(即不用于公开发布),则可能切换到Android Studio并使用产品风格而不是应用程序和单独的库。