我正在编写一个Android应用程序,我需要将2个文件复制到设备的内部存储中。目前,在使用DDMS手动复制设备的"/数据/数据/[my_package_name]/files"文件夹下的两个文件后,我可以运行我的应用程序。当我的应用程序安装在设备上时,我需要将这两个文件放入该文件夹(或任何文件夹)中。这里的提示说"res/raw/"目录中的文件将被部署到设备中,并且可以通过openRawResource()访问,但它没有告诉这些文件将放在内部存储器中的哪个位置。为了夏天化,我的项目文件夹中有两个文件(assets,raw,任何其他文件夹),我需要将这两个文件复制到内部存储器的路径中。我怎样才能做到这一点?我是否需要包含任何权限才能.xml我的 AndroidManifest?
提前谢谢你
大不了的。有几种方法可以做到这一点,但可能比这种方法短。
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));
是的,您需要写入SDcard的权限(WRITE_EXTERNAL_STORAGE)。
更新:
澄清一下:提示说的是:
提示: 如果要在编译时将静态文件保存在应用程序中,请将该文件保存在项目 res/raw/目录中。你可以用openRawResource()打开它,传递R.raw。资源 ID。此方法返回可用于读取文件的输入流(但不能写入原始文件)。
资产文件夹中的文件包含在apk中,但这些文件是只读的,永远不会部署到内部或外部存储器。如果需要这样做,则必须自己完成,如上例所示。