Android:有效地将包含数千个文件的zip从资产复制到内部存储

问题描述 投票:1回答:1

TL; DR:有没有办法将包含数千个Android资产文件的zip文件复制到比使用ZipInputStream更有效的内部存储?

我的Android应用程序有几个资产需要在首次启动时复制到设备存储中。它们作为zip文件存储在资产中,并通过ZipInputStream(在here方法中)的unzip进行复制。共有10个zip文件,共36MB,解压缩/复制过程大约需要3秒。

问题:我需要添加一个39MB的新资产,但它会为该过程增加大约30秒。我的预感是,这是因为该资产包含5500个文件(平均每个大约7KB)。由于我在启动时需要资产,因此在后台服务中运行此资源不是一种选择,30秒以上是显示启动画面的非常长的时间。

This post建议使用ZipFile而不是ZipInputStream,但它似乎在Android中没有正常工作,如here和其他S / O帖子所述,我遇到了相同的ZipException(注意这是在将zip文件复制到内部存储之后 - Android assets只提供一个流,而不是一个文件,因此必须先从资产中复制zip,然后才能使用ZipFile方法。

有没有更有效的方法来解决这个问题?

android unzip android-assets
1个回答
1
投票

不幸的是 - 不是写每个文件包含3个主要操作:创建和打开文件进行写入,将数据写入文件,关闭文件进行写入。复制此类文件的最快方法 - 将它们放在一个文件中,例如二进制文件或sqlite数据库文件。或者您可以找到直接从存档中读取的方法。请记住,您将无法从资产中删除此文件(至少我从未听说过解决方案)因此对我来说似乎毫无用处。

© www.soinside.com 2019 - 2024. All rights reserved.