将具有2500个文件的12MB文件夹从资产快速复制到SD卡

时间:2013-07-25 15:50:54

标签: android

我正在尝试将我的apk资源文件夹中的大量文件夹和子文件夹快速复制到我的SD卡。这些文件夹包含12mb的小文件,大概总共2500个。此SO问题的代码示例有效,但我的设备需要5分钟。有更快的方法吗?

我最初尝试将文件夹添加到zip存档中并在将其移动到设备上后将其解压缩,但它在不同设备上创建了许多问题,并且在整个过程中失败了很多。

2 个答案:

答案 0 :(得分:1)

12mb应该节省一点,如果您使用其他SO question中的方法,请尝试增加copyFile中的缓冲区大小,

private void copyFile(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[8192]; // 1024 is kind small,..try 8192 or 4096!!
    int read;
    while((read = in.read(buffer)) != -1){
      out.write(buffer, 0, read);
    }
}

答案 1 :(得分:1)

我创建了一个zip文件,将其放在我的应用程序中的raw或assets中,并在用户首次打开应用程序时解压缩,从而获得了非常好的,一致的结果。我建议你再试一次,因为我已经看到我已经看到数百次安装的零问题。

我将帮助方法基于zip和解压缩文件的教程在这里: Unzipping Files w/ Android,和 Zipping Files w/ Android

应该注意的是,我使用Java API来创建我在安装我的应用程序时包含的zip。这可能就是我使用Android中的Java API解压缩它们的原因。

希望这有帮助!祝你好运!