我正在尝试压缩一堆文件,并通过流使数据可用。
我希望保持尽可能小的内存占用。
我的想法是实现一个流,其中我有一堆FileStream对象作为数据成员。当我的Stream上的Read方法被调用时,我会从我的一个文件流中读取一些数据,并使用ZipOutputStream实例将压缩数据写入临时存储流,然后将读取请求转发到该临时存储流。
这个临时存储流将只是一个字节队列。当这些字节被移动到缓冲区中时(通过调用Read),它们将从队列中删除。这样,我将只存储尚未读取的字节。
不幸的是,似乎当我处理一个ZipOutputStream时,为了创建一个有效的压缩文件,它需要写入随机的文件位置。这将阻止我使用“转瞬即逝的数据”解决方案。
希望这一切都清楚了:)
在创建zip文件时,有没有其他方法可以最小化内存占用?请帮帮我!
谢谢!
发布于 2012-02-08 04:31:15
ZipOutputStream不需要写入输出流中的随机位置(换句话说,调用Seek())。但是,如果您写入的流报告它是CanSeek的,它将使用该功能来更新一些标头。
因此,请确保您正在写入的流为CanSeek()返回false,一切都应该正常工作。
https://stackoverflow.com/questions/9182623
复制相似问题