を閉じて、ストリームにはzlib圧縮データ及びいくつかの余分なデータを書き込むための私のC#メソッドです:compressor.Close()
が呼び出されるとDeflateStreamは、ここで入力ストリーム
using (var compressor = new DeflateStream(compressStream, CompressionMode.Compress)) {
compressor.Write(input, 0, input.Length);
compressor.Close();
compessStream.Write(extraData, 0, extraData.Length);
}
、それが自動的に入力ストリームを閉じます。その結果、ストリームに余分なデータを書き込むことはできません。
余分なデータを書き込んだ後にコンプレッサーを閉じると、データの順序が無効になります。私の余分なデータは圧縮されたデータの前に書かれています。
なぜDeflateStream.Close()
も入力ストリームを閉じますか?実際のストリームクラスをラップし、後者が閉じないようにするストリームクラスを記述するのに手間がかかりますか?よろしく。デフォルトでは
[__DynamicallyInvokable]
protected override void Dispose(bool disposing)
{
try {
this.PurgeBuffers(disposing);
}
finally {
try {
if (disposing && !this._leaveOpen && this._stream != null) {
this._stream.Close();
}
}
finally {
this._stream = null;
try {
if (this.deflater != null) {
this.deflater.Dispose();
}
}
finally {
this.deflater = null;
base.Dispose(disposing);
}
}
}
}
は、DeflateStreamは、基になるストリームを所有しているので、また、ストリームを閉じ、ストリームを閉じる:/クローズそれはこのように設計するので廃棄する際
'新しいDeflateStream(compressStream、CompressionMode.Compress、leaveOpen:真)' – PetSerAl