0

出于某种原因,我需要在我的 apk 中加入一些默认文件,但我需要写入 sd 卡,因为我的应用程序尝试读取 sd 卡,我需要将我的默认文件第一次存储在 sd 卡中

怎么做

我已经看到很多 tuto tu 从 sd 卡中获取可绘制对象,但我不想相反,我会从我加入 apk 的默认文件在 sd 卡上写入文件

任何想法?我没有代码,因为我没有任何提示可以做到这一点

4

1 回答 1

0

压缩您的文件并将压缩文件(命名它my_raw_files.zip)放入res/rawEclipse 中的文件夹中,它将与您的应用程序一起打包。然后你可以在你的应用程序第一次启动时将它复制到外部存储(“sdcard”):

private static final File USER_DIR = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator
        + "myfolder");
...
boolean dirCreated = USER_DIR.mkdirs();
if (dirCreated)
{
  FilesUtil.unzipFiles(this.getResources().openRawResource(R.raw.my_raw_files),
                    USER_DIR.getAbsolutePath());
}
...
static public void unzipFiles(InputStream zipIS, String outputPath)
{
    try
    {
        // unzip files into existing folder structure
        ZipInputStream zin = new ZipInputStream(zipIS);
        try
        {
            ZipEntry ze;
            while ((ze = zin.getNextEntry()) != null)
            {
                if (!ze.isDirectory())
                {
                    Log.d(TAG, "unzip " + ze.getName());

                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    byte[] buffer = new byte[1024];
                    int count;
                    FileOutputStream fout = new FileOutputStream(outputPath + File.separator + ze.getName());
                    while ((count = zin.read(buffer)) != -1)
                    {
                        baos.write(buffer, 0, count);
                        byte[] bytes = baos.toByteArray();
                        fout.write(bytes);
                        baos.reset();
                    }
                    fout.close();
                }
            }
        } finally
        {
            zin.close();
        }

    } catch (Exception e)
    {
        Log.e(TAG, "unzip", e);
    }

}    
于 2013-05-21T13:44:59.087 回答