问题描述
SharpZipLib 是用于处理档案的 Java 库的 .Net 实现。它提供了 ZipOutputStream 类,该类派生自 DeflaterOutputStream 并具有 Finish() 方法。在文档 here 中,Finish() 方法“将在 zip 文件的末尾写入中央目录并刷新流”,并且“在流关闭时自动调用”。 所以我想知道如果我无论如何调用 Close() 是否应该调用 Finish() 方法。
更新:这个问题应该用另一种方式表述:如果我可以调用 dispose() 或 Close() 来完成这项工作(包括调用 Finish() 方法),我为什么要使用 Finish() 方法?
解决方法
来自 ZipOutputStream - Finish() 的文档:
当流关闭时会自动调用。
至于关闭,ZipOutputStream
需要妥善处理。无需调用 Close
方法。
using (var zip = new ZipOutputStream(new FileStream("some path",FileMode.OpenOrCreate)))
{
// add some files.
}