OPにリストされた制約を使用してそれを書いていた場合、146個のバッファを作成してそれらにデータを挿入し、最後にバッファを順番に見ていき、単一のファイルハンドルを閉じたり開いたりします。
あなたはコメントで、速度が大きな懸念事項であり、単純なアプローチは遅すぎると述べました。
検討を開始できることがいくつかあります。1 つは、バイナリ ファイルを連続したストリップに再編成することです。これにより、並列操作が可能になります。もう 1 つは、ファイルハンドル コレクションに対して最も最近使用されていない方法です。別のアプローチとして、8 つの異なるプロセスに分岐し、それぞれが 19 ~ 20 個のファイルに出力することもできます。
これらのアプローチのいくつかは、バイナリ構成 (高度に断片化されているか高度に順次的か) に応じて、多かれ少なかれ実用的に記述できます。
主な制約は、バイナリ データのサイズです。キャッシュよりも大きいですか?メモリより大きい?テープデッキからストリーミング?継続的にセンサー ストリームから出てきて、メモリ内に「ファイル」としてのみ存在しますか? それらのそれぞれは、異なる最適化戦略を提示します...
もう 1 つの問題は、使用パターンです。ファイルへの書き込みがときどき急増していませんか? それとも大量のチャンクが数回しか書き込まれていませんか? これにより、ファイルハンドルのさまざまなキャッシング/ページング戦略の有効性が決まります。