私はしばらくの間 .NET で ZipPackage クラスを使用しており、そのシンプルで直感的な API がとても気に入っています。エントリから読み取るときは、entry.GetStream() を実行し、このストリームから読み取ります。エントリの書き込み/更新時に、entry.GetStream(FileAccess.ReadWrite) を実行して、このストリームに書き込みます。ストリームが元々どこから来たのかわからない他のコードに読み取り/書き込みを渡すことができるため、非常にシンプルで便利です。
ZipPackage-API には LastModified などのエントリ プロパティのサポートが含まれていないため、DotNetZip などの他の zip-api を調べています。ただ、使い方が少しわかりずらかったです。たとえば、エントリから読み取りたい場合、最初にエントリ全体を MemoryStream に抽出し、先頭に移動して、このストリームを他のコードに渡す必要があります。エントリに書き込むには、ZipEntry 自体が読み取れるストリームを入力する必要があります。これは私には非常に後ろ向きに思えます。この API を間違った方法で使用していますか?
ZipEntry は、ファイルが保存されているディスクから直接ファイルを配信し、リーダーが読み取るときに抽出することはできませんか? 最初にメモリに完全に抽出する必要がありますか? 私は専門家ではありませんが、私には間違っているようです。