1

それで、私はDotNetZip Libraryをしばらく使用してきましたが、昨日 zip ファイルのサイズを最大にしたときまで、かなりうまく機能していました。いつでも、PDF を圧縮して、zip ファイルのみを受け入れる SFTP サイトに転送する必要があります。PDF の量は、数百、数千から 10,000 を優に超えます。昨日、DotNetZip プロセスが壊れたとき、約 24,000 の PDF がありました。DotNetZip ライブラリを使用して zip ファイルを分割する方法がありますが、何らかの理由で、SFTP サーバーで使用されているシステムは分割された zip ファイルを処理できません。

5K (またはその他の設定された量のファイル) を取得し、それらのファイルを削除し、別の 5K を取得し、zip し、削除し、すべてのファイルが圧縮されるまでプロセスを繰り返す最良の方法は何ですか?

これが私の現在のzipプロセスのコードです...

        Dim PathToPDFs As String = "C:\Temp" 'PDF LOCATION
        Using Zip As ZipFile = New ZipFile()
            Zip.AddSelectedFiles("(name = *.pdf)", PathToPDFs, "", True)
            Zip.CompressionMethod = CompressionMethod.Deflate
            Zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression
            Zip.Save("C:\Temp\Zipfile.zip")
        End Using
4

1 に答える 1

1

最初にすべてのファイルを列挙し、FileInfo のリストを取得してから、それらをループで調べ、5K (またはバッチ サイズに関係なく) ごとに ZIP ファイルを作成してみてください。何も削除する必要はありません。メモリにバッチ ID を保持するだけで、zip ファイル名はそれから派生します (つまりpdf_batch_01.zip)。

したがって、バッチサイズに達したらSave、新しい を作成して作成ZipFileし、ループにファイルを追加し続けます。最後のファイルで「コミット」することも忘れないでください (最後のバッチはおそらく不完全です)。要約すると、バッチサイズに達したとき、または最後のエントリを処理したときに「コミット」します (のバリエーションi=FileCount-1)。

于 2013-12-17T15:44:41.557 に答える