找出在SD卡中保存解压缩文件所需的大小

时间:2012-06-21 07:19:30

标签: java android android-sdcard unzip

这是我的要求。我需要解压缩一个zip文件并将其存储在SD卡中。我现在通过使用提供的示例here.将文件解压缩并存储在SD卡中并且其工作正常。现在在将文件保存到SD卡之前,我需要找出sdcard中是否有可用空间,以便我可以毫无问题地解压缩我的zip文件。我发现这个example有助于找出sdcard中文件夹的大小。所以我用它来找出解压缩文件的大小。

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

  1. 如何在SDCard中找到可用空间?
  2. 是否有任何方法可以识别解压缩文件所需的总空间,即使在解压缩之前也是如此,以便我可以通知用户SD卡中的可用空间是否不足?
  3. 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以在文件中迭代ZipEntry,在每个文件上调用getSize()并添加它以获得近似值。但这并不总是保证可用(它可能返回-1)。添加到实际zip文件的大小,并可能圆满到兆字节,以确保。你可以使用这样的东西来获得外部存储空间的可用空间:

StatFs stats = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long free = ((long) stats.getBlockSize()) * stats.getAvailableBlocks();