当前位置: 首页 > 知识库问答 >
问题:

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

方高丽
2023-03-14

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

但这是我的问题。正如我们所知,当解压缩一个zip时,我们可能需要一点额外的空间来保存文件,因为解压缩的文件与zip文件本身的大小不一样,它将需要更多的空间。我的问题来了。

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

非常感谢任何帮助。

共有1个答案

商鸿哲
2023-03-14

您可以迭代文件中的zipentry,对每个文件调用getSize(),并将其相加以获得一个近似值。但这并不总是保证可用(它可能返回-1)。再加上实际zip文件的大小,并可能四舍五入到兆字节。您可以使用类似于以下内容来获取外部存储上的可用空间:

StatFs stats = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long free = ((long) stats.getBlockSize()) * stats.getAvailableBlocks();
 类似资料:
  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 为了解压缩zip文件,我使用了包java.util.zip*中的类,通过引用它,它可以正常工作,但是解压缩40MB的文件需要59秒。当我在iPhone project上尝试相同的zip文件(我们正在为Android和iPone这两个平台开发应用程序,它们具有解压缩zip文件并将解压缩的内容保存到SDCARD-Android或文档目录-iPhone的功能)时,只需要14秒。iphone应用程序使用了

  • 问题内容: 我想使用urllib下载文件,并在保存之前对文件进行解压缩。 这就是我现在所拥有的: 最终将写入空文件。我该如何实现自己的追求? 更新的答案: 问题答案: 在写完之后,但要传递给之前,您需要寻找到开始的地方。否则它将被模块从头读取,并显示为空文件。见下文:

  • 问题内容: 我有一个ZIP文件目录(在Windows计算机上创建)。我可以使用手动解压缩它们,但是如何通过外壳解压缩当前文件夹中的所有ZIP文件呢? 使用Ubuntu Linux服务器。 问题答案: 根据以下链接,这可以在bash中运行: 解压缩\ *。zip

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示:

  • 除非设置了主密码,否则压缩配置文件里保存的密码没有安全地加密,并且可以被任何能访问 您电脑的人读取。您可以输入主密码来加密保存在注册表里的密码数据,并保护它免遭未经授权 的访问。此后,您需要在密码提示对话框里输入主密码,才能访问此压缩配置文件。 您可以使用与密码管理器里相同的作为主密码,或者选择不同的密码。您甚至可以为不同的 压缩配置文件指定不同的主密码,尽管这样可能不便于使用。 一旦输入,主密码