如何在Pharo中创建zip文件并将其写入磁盘?
我认为我可以使用MemoryStore创建结构,然后按照以下方式进行压缩。
root := FileSystem memory root ensureCreateDirectory.
root / 'sample.txt' writeStreamDo: [ :stream | stream << String loremIpsum ].
archive := ZipArchive new.
root allChildren select: #isFile thenDo: [ :each |
each readStreamDo: [ :readStream |
archive addString: readStream contents as: each fullName
]
].
archive writeTo: someFinalWriteStream.
archive close.
但是显然,通过addString:as:
添加的数据根本没有被压缩。
同样,addFile:
/addFile:as:
也无法使用,因为实现只能使用真正的磁盘,而非内存。
那么有没有其他方法(或外部库)可以在不必把所有文件都转储到磁盘、在磁盘上对其进行压缩并读取最终文件的情况下对数据进行压缩呢?