1

DotNetZip ライブラリを使用して、ファイルをプログラムで圧縮しています。結果の zip ファイルは、SFTP を使用してサーバーにアップロードされます。

私の質問は、サーバー上でファイルを解凍する順序を指定できる方法があるかどうかです。

解凍のタスクを実行するジョブについてはわかりません。

編集: zip は、100 個のドキュメント (通常は PDF) と、これらのドキュメントごとに 100 個のメタデータ ファイルで構成されています。メタデータ ファイルは .metadata で終わります。このような拡張子を持つファイルは、メタデータによって参照されるドキュメントを検索するジョブをサーバー上でトリガーします。これらの .metadata ファイルを、他のすべての通常のファイルが抽出された後に zip から抽出したいと考えています。

4

3 に答える 3

0

この種の一般的なアプローチは、多くの場合、一時的な場所に抽出してから、後でピックアップ場所に移動することです。

そうすれば、半分書き込まれたファイルや順序に関する問題が発生することはありません。また、解凍に失敗しても、半分のデータ セットが消費者に残されることはありません。

于 2012-07-12T10:53:14.093 に答える
0

これをLAMPサーバーでテストしました。私の場合の解凍は次のように行われます。あなたのケースでそれを見つけるには、サーバーでこれをテストする必要があります。

firstly
    Folders a,A,b,B....--->z (alphabetically)
secondly
    Files a,A,b,B....--->z (alphabetically)

あなたの場合、解凍順序をテストし、必要に応じてリストの先頭または末尾になるようにメタデータ ファイルに名前を付けます。

または@Onkelborgが言ったように、あなたの場合、解凍操作は抽出中にzipの順序に従うだけです。最初にテストしないと、決定的な方法はありません。

それでも、複数のスレッドが操作を実行している可能性があり、問題が発生する可能性があるため、最も安全な方法は、ファイルとメタデータを一時的な場所に解凍してから、正しい順序で移動することです。

于 2012-07-12T10:46:00.207 に答える
0

メソッドを使用して抽出の順序を設定することはできませんが、を使用ExtractAllしてアーカイブ内のファイルのリストを取得し、それらを必要な順序で処理するために使用できます。 アップデート:EntriesExtractSelectedEntries

いいえ、サーバーと解凍メカニズムを制御することはできません

では、DotNetZip の使用法の問題ではないのでしょうか?.. OK、プラン B: 別のアーカイブでメタデータを送信します。しかし、アンパックの同期が取れていないという問題があるかもしれません。

于 2012-07-12T10:40:17.010 に答える