LZMA sdk を使用してファイル (またはファイルのセット) を圧縮し、そのファイルを ftp サーバーに送信するユーティリティを作成しています。通常、圧縮の速度は ftp 接続の速度よりも高速です。私がやりたいのは、ファイルを圧縮する代わりに、ファイルが完了するのを待ってから、一時ファイルまたはストリームに圧縮したいアップロードを開始し、圧縮中に完成した部分をアップロードすることです。
今の問題はどのようにですか?
私が抱えている懸念の 1 つは、使用するファイルを圧縮すると 1 GB を超える可能性があり、これを実行するシステムには 512 MB から 2 GB の RAM があるため、圧縮側がメモリに暴走させたくないということです。システムをロックします。私が考えている方法は、スレッドで圧縮を実行し、メモリ ストリームで 5 ~ 10Mb をキューに入れ、その情報を別のスレッドで ftp に送信することです。これは良いアプローチですか、それとももっと良い方法がありますか? ファイルが完了したときにファイルの先頭にあるファイルヘッダーを書き換える必要があるなどの落とし穴はありますか?
これは c# で書く予定ですが、c、c++、または Java のコード例でも問題ありません。
ご協力ありがとうございました。