1

我正在编写一个 Android 应用程序,我需要将 2 个文件复制到设备的内部存储中。目前,我可以在使用 DDMS 手动复制设备的“/data/data/[my_package_name]/files”文件夹下的这两个文件后运行我的应用程序。在设备上安装我的应用程序时,我需要将这两个文件放入该文件夹(或任何文件夹)中。这里的提示说“res/raw/”目录中的文件将被部署到设备上,并且可以通过 openRawResource() 访问,但它没有说明这些文件将放在内部存储器中的什么位置。总结一下,我的项目文件夹中有两个文件(资产、原始文件夹、任何其他文件夹),我需要将这两个文件复制到内部存储器的路径中。我怎样才能做到这一点?我的 AndroidManifest.xml 是否需要包含任何权限?

先感谢您

4

1 回答 1

1

没什么大不了的。有几种方法可以做到这一点,但可能比这更短。

InputStream is = AssetManager.open("somefile.txt");
File outputFile = new File(getExternalFilesDir(), "somefile.txt");
OutputStream os = new FileOutputStream(outputFile);

//Now copy is to os. I'd recommend using Apache Commons IO
org.apache.commons.io.IOUtils.copy(is, os));

是的,您需要写入 SD 卡 (WRITE_EXTERNAL_STORAGE) 的权限。

更新:
只是为了澄清:提示说的是:

提示:如果要在编译时在应用程序中保存静态文件,请将文件保存在项目 res/raw/ 目录中。您可以使用 openRawResource() 打开它,传递 R.raw。资源标识。此方法返回一个 InputStream,您可以使用它来读取文件(但您不能写入原始文件)。

assets 文件夹中的文件包含在 apk 中,但这些文件是只读的,它们永远不会部署到内部或外部内存中。如果你需要这样做,你必须自己做,如上例所示。

于 2012-11-27T12:36:05.303 回答