c# - 使用 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);
解决方案
您可以尝试使sunzip适应您的需求。它将 zip 文件作为流读取并解压缩。
推荐阅读
- validation - 具有数据验证的 Google 表格中的一对一分配
- kframework - K 中的 Alpha 等价比较?
- javascript - 解析配置时出错 - JSON5:在 syntaxError 1:1 处输入无效结束
- php - PHP Xpath 帮助,无法解析 HTML
- tensorflow - 重塑输入层“请求的形状”大小总是“输入形状”大小的平方
- javascript - Create-React-App 生产版与开发版不同
- oracle - 当按下默认插入记录按钮 oracle 表单时触发
- python - 字段不存在错误(使用 odoo 12)
- python - askopenfiledialog 加载许多picke文件并将它们转换为一个Dataframe
- asp.net-core-3.1 - 需要了解如何以一种形式创建用户并为其分配角色(ASP.NET Core MVC 3+)