android - 复制 Android 内存中的文件

标签 android android-resources android-assets

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

提前致谢

最佳答案

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

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 中,但这些文件是只读的,它们永远不会部署到内部或外部存储器中。如果您需要这样做,则必须自己完成,如上例所示。

关于android - 复制 Android 内存中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13583820/

相关文章:

两个字符串之间的Java正则表达式提取字符串

android - 任何 View 的 R.id(最小和最大整数值)的范围是多少

Android drawable xml 无法转换为 API 10 的颜色异常

高分辨率手机和谷歌电视的 Android 资源标识符

android - 在android中保存文件,所以用户无法读取

java - 用于测试的 Android Assets

java - 无法设置作为从服务器到 CustomListView 适配器的响应而出现的数据

android - 强制字体大小

android - 如何从我的应用程序数据文件夹中获取任何文件的路径

android - 错误记录并在android中播放音频