3

C#では、FileStreamのメソッドRead / Write/Seekがintegerパラメーターを取り込みます。以前の投稿で、プロセスに割り当てられた仮想メモリよりも大きいファイルを読み取り/書き込みするための優れたソリューションを見てきました。

このソリューションは、データを最初から最後まで書き込みたい場合に機能します。しかし、私の場合、受信しているデータのチャンクは特定の順序ではありません。

2GB未満のファイルで機能するコードがあります:

private void WriteChunk(byte[] data, int position, int chunkSize, int count, string path)
    {

        FileStream destination = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
        BinaryWriter writer = new BinaryWriter(destination);
        writer.Seek((int) (position*chunkSize), SeekOrigin.Begin);
        writer.Write(data, 0, count);
        writer.Close();
    }

2GBを超えるファイルにチャンクを探して書き込む方法はありますか?

4

2 に答える 2

4

intは使用せず、longを使用してください。シークには時間がかかります。

ただし、どこかでintにキャストするだけでなく、どこでも長く使用する必要があります。

于 2012-06-07T16:58:09.420 に答える
2
writer.Seek((long)position*chunkSize, SeekOrigin.Begin);
于 2012-06-07T16:58:34.107 に答える