2

我正在尝试将大量文件夹和子文件夹从我的 apk 资产文件夹快速复制到我的 SD 卡中。这些文件夹包含 12mb 的小文件,总共可能有 2500 个。这个SO question 中的代码示例有效,但在我的设备上需要 5 多分钟。有没有更快的方法来做到这一点?

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

4

2 回答 2

1

12mb 应该会节省一点,如果您使用其他SO 问题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);
    }
}
于 2013-07-25T16:23:23.640 回答
1

通过创建 zip 文件、将其放入我的应用程序中的原始文件或资产,并在用户首次打开应用程序时解压缩它,我获得了非常好的、一致的结果。我建议您再试一次,因为我印象深刻的是,我已经看到数百次安装的零问题。

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

应该注意的是,我使用 Java API 创建了包含在我的应用程序安装中的 zip。这可能就是为什么我使用 Android 中的 Java API 解压缩它们的结果如此一致。

希望这可以帮助!祝你好运!

于 2013-07-25T16:28:39.500 回答