0

这是我的要求。我需要解压缩一个 zip 文件并将其存储在 sdcard 中。我现在已经使用此处提供的示例将文件解压缩并存储在 sdcard 中。它工作正常。现在在将文件保存到 sdcard 之前,我需要确定 sdcard 中是否有可用空间,以便我可以毫无问题地提取我的 zip 文件。我发现这个例子有助于找出 sdcard 中文件夹的大小。所以我用它来找出解压缩文件的大小。

但这是我的问题。众所周知,在提取 zip 文件时,我们可能需要一点额外空间来保存文件,因为解压缩文件的大小与 zip 文件本身不同,并且需要更多空间。这是我的问题。

  1. 如何在 SDCard 中找到可用空间?
  2. 有没有办法在解压缩之前识别解压缩文件所需的总空间,以便我可以在 SD 卡中的可用空间不足时通知用户?

任何帮助深表感谢。

4

1 回答 1

0

您可以迭代ZipEntry文件中的 ',在每个上调用getSize()并将其相加以获得近似值。但是,这并不总是保证可用(它可能返回-1)。再加上实际 zi​​p 文件的大小,可能会四舍五入到兆字节。您可以使用类似这样的方法来获取外部存储上的可用空间:

StatFs stats = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long free = ((long) stats.getBlockSize()) * stats.getAvailableBlocks();
于 2012-06-21T08:00:12.827 回答