首页 > 解决方案 > 使用 c# 即时解压缩谷歌存储上的文件

问题描述

我有一个非常有趣的问题,我希望我可以使用 .Net 解决,只是我在 google 存储中有一个 zip 文件,我想解压缩并移动到另一个存储桶,但我没有足够的内存或存储空间来保存整个文件并解压缩。为了解决这个问题,我必须在文件末尾读取 zip 文件的中央目录部分,然后进行流式解压缩。有没有人研究过类似的问题?

到目前为止,我想使用以下代码从文件中获取最后 1024 个字节:

  var fileInfo = _storage.GetObject(BucketName, fileName, new GetObjectOptions { Projection = Projection.Full });

var stream = new MemoryStream();
_storage.DownloadObject(BucketName, fileName, stream, new DownloadObjectOptions { Range = new System.Net.Http.Headers.RangeHeaderValue((long)(fileInfo.Size - 1024), (long)(fileInfo.Size)) });

问题是我无法从此流中读取中央目录:

ZipArchive z = new ZipArchive(stream);

标签: c#zipgoogle-cloud-storagecompression

解决方案


您可以尝试使sunzip适应您的需求。它将 zip 文件作为流读取并解压缩。


推荐阅读