DotNetZip streaming

本文关键字:streaming DotNetZip | 更新日期: 2023-09-27 18:22:51

我正试图压缩一堆文件,并通过流来消耗数据。

我希望内存占用空间尽可能小。

我的想法是实现一个Stream,其中我有一堆FileStream对象作为数据成员。当调用Stream上的Read方法时,我会从我的一个文件流中读取一些数据,并使用ZipOutputStream实例将压缩后的数据写入临时存储流,然后将读取请求转发到临时存储流。

这个临时存储流将只是一个字节队列。当这些字节被移动到缓冲区时(通过对Read的调用),它们将从队列中删除。这样,我只会存储尚未读取的字节。

不幸的是,当我处理ZipOutputStream时,它似乎需要在随机文件位置写入,才能创建有效的zip文件。这将阻止我使用我的"稍纵即逝的数据"解决方案。

希望一切都清楚:)

在创建zip文件时,是否有其他方法可以最大限度地减少内存占用?请帮忙!

谢谢!

DotNetZip streaming

ZipOutputStream不需要写入输出流中的随机位置(换句话说,调用Seek())。但是,如果您正在写入的流报告为CanSeek,它将使用该功能来更新一些标头。

因此,请确保您正在编写的流为CanSeek()返回false,并且一切正常。