我正在编写Android应用程序,我需要将2个文件复制到设备的内部存储中。目前,我可以在使用DDMS在设备的“/ data / data / [my_package_name] / files”文件夹下手动复制这两个文件后运行我的应用程序。当我的应用程序安装在设备上时,我需要将这两个文件放入该文件夹(或任何文件夹)。这里的tip表示“res / raw /”目录中的文件将被部署到设备,并且可以通过openRawResource()访问,但它不会告诉这些文件将放在内部存储器中的哪个位置。总结一下,我的项目文件夹(资产,原始文件,任何其他文件夹)中有两个文件,我需要将这两个文件复制到内部存储器的路径中。我怎样才能做到这一点?我是否需要AndroidManifest.xml中包含的任何权限?
提前谢谢
答案 0 :(得分: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。资源ID。此方法返回一个可用于读取文件的InputStream(但您无法写入原始文件)。
assets文件夹中的文件包含在apk中,但这些文件是只读的,它们永远不会部署到内部或外部内存中。如果你需要这样做,你必须自己做,如上面的例子所示。