我正在尝试将大量文件夹和子文件夹从我的 apk 资产文件夹快速复制到我的 SD 卡中。这些文件夹包含 12mb 的小文件,总共可能有 2500 个。这个SO question 中的代码示例有效,但在我的设备上需要 5 多分钟。有没有更快的方法来做到这一点?
我最初尝试将文件夹添加到 zip 存档并在将其移动到设备上后将其解压缩,但它在不同设备上产生了许多问题,并且在整个过程中失败了很多。
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);
}
}
通过创建 zip 文件、将其放入我的应用程序中的原始文件或资产,并在用户首次打开应用程序时解压缩它,我获得了非常好的、一致的结果。我建议您再试一次,因为我印象深刻的是,我已经看到数百次安装的零问题。
我基于帮助方法来压缩和解压缩文件的教程在这里: Unzipping Files w/ Android和 Zipping Files w/ Android
应该注意的是,我使用 Java API 创建了包含在我的应用程序安装中的 zip。这可能就是为什么我使用 Android 中的 Java API 解压缩它们的结果如此一致。
希望这可以帮助!祝你好运!