私のアプリケーションでは、大きなファイル (約 2 ~ 7 GB) に約 50 ミリ秒ごとにデータ チャンク (約 2 MB) を継続的に書き込む必要があります。これはシーケンシャルで循環的な方法で行われるため、チャンクを次々とファイルに書き込み、ファイルの最後に到達したら最初からやり直します。
現在、私は次のようにやっています:
C# では、File.OpenWrite
1 回呼び出して読み取りアクセスでファイルを開き、ファイルのサイズを で設定しますSetLength
。チャンクを書き込む必要がある場合は、安全なファイル ハンドルを unmanaged WriteFile
(kernel32.dll) に渡します。ここでは、チャンクを書き込む必要があるファイル内の位置を指定するオーバーラップ構造を渡します。書き込む必要があるチャンクはアンマネージ メモリに格納されるため、 にIntPtr
渡すことができる がありWriteFile
ます。
このプロセスをより効率的にできるかどうか、またその方法を知りたいです。何か案は?
詳細な質問:
- ファイル I/O からメモリ マップト ファイルへの変更は役に立ちますか?
- NTFS の最適化を含めることはできますか?
- 不足しているファイルを作成するときに役立つパラメーターはありますか? (特別なパラメーターを使用した管理されていない呼び出しの可能性があります)