1

私の現在のプロジェクトでは、顧客のためにそれらをコピーするのに時間がかかるリソースとして、膨大な数のファイル (1 から 30 KB の少量の数十億ファイル以上) を扱っています。1000 個または 10000 個のファイルを 1 つのファイルにパッケージ化するのに役立つパッケージング メカニズムを探しています。また、アプリケーションからそれらを読み取るには、それらを作成または変更している間、抽出も圧縮も必要ないはずです(分散され、リソースがクライアント間で共有されているアプリケーションのパフォーマンスと性質のため)、私は検索しました次の ZIP ライブラリについて知っている:

  • SharpZipLib
  • ドットネットジップ
  • System.IO.Packaging

しかし、上記のライブラリは、解凍せずにzipまたはパッケージ内のファイルにアクセスするために、少なくともファイルを反復処理する必要があるようです。zip またはパッケージ ファイル内のアドレス (フォルダー構造階層) を介してファイルにアクセスする必要があります。次のリンクは、zip ファイルを繰り返し処理することで回答される同様の質問です。

ファイル全体を解凍することなく、zip ファイルからデータを読み取る方法

zip ファイル内のコンテンツ

この問題について誰かアイデアや解決策はありますか?

ところで、私は C# でコーディングしており、プロジェクトは Windows フォーム ベースです。

4

1 に答える 1

0

独自のパッケージ形式を作成します。GZipStream などを使用します。ファイルごとに、バイト値を取得した後、GZipStream で圧縮し、各ファイル (名前、開始位置、長さ) を含むパッケージ形式でヘッダーを作成する必要があります。このデータがヘッダーにあると、おそらくパッケージの最初に表示されます。必要なファイルの情報を取得でき、圧縮データの位置をシークしただけで、指定された長さのバイト配列が取得されます。

ただし、1 つのファイルを変更すると、変更したファイルの後にすべてのインデックスを再計算する必要があります。

于 2012-12-18T17:49:03.077 に答える