【发布时间】:2016-09-24 17:12:16
【问题描述】:
当我研究如何在 Pharo 中创建 Zip 文件时,我遇到了这个已解决的堆栈溢出问题:How do you compress a directory in Squeak Smalltalk?。
我探索了这个类,我发现你可以用addString: 'string' as: 'myFile.txt'方法动态地给它添加字符串(如果我没记错的话)。所以下一步也是最后一步,是将它作为流输出,因为我希望它在海边的锚回调中动态生成,所以它是自动生成和下载的,而不需要创建任何临时文件。
我尝试了很多组合,但我无法找到正确的处理方式。另外,一个附带的问题,如果提到的方法,如果字符串是二进制的,它将被视为字符串还是二进制?
感谢您的回复。
编辑:我找到了应该是我正在寻找的方法writeTo: stream,只是我不知道要为它创建哪种流。 WriteStream with: String new 没有用。既不是ByteString new writeStream 我总是得到Improper store into indexable object 错误
EDIT2:我尝试了以下代码:
| z str |
z := ZipArchive new.
z
addString: someBinaryPNGString as: 'myFile.png';
addString: someBinaryPNGString as: 'another.png'.
str := "Initialize the stream here somehow"
z writeTo: str
其中 someBinaryPNGString 来自 base64 文本,而“以某种方式在此处初始化流”是我缺少的部分。
这甚至是创建动态 Zip 文件的正确方法吗?
【问题讨论】: