2

C#で大きな.ISOファイルを操作したい。それを操作し、ファイルを追加および削除し、そこから新しいISOを作成したいと思います。DiscUtilsライブラリを試しましたが、動作させることができないようです。(標準のC#関数を使用して)ロードすると、常にOutOfMemoryExceptionが発生します。これは600MBのISO(多かれ少なかれ)であり、私は2GBのRAMを持っています。

私は現在これを行っています:

                FileStream fs = new FileStream(FileDialog.FileName, FileMode.Open, FileAccess.Read);
                BinaryReader b = new BinaryReader(fs);


                byte[] buffer = b.ReadBytes((int)fs.Length);




                int count;                            // actual number of bytes read
                int sum = 0;
                while ((count = b.Read(buffer, (int)sum, (int)(buffer.Length - sum))) > 0)
                {
                    sum = sum + count;  // sum is a buffer offset for next reading
                }

「byte[]buffer = b.ReadBytes((int)fs.Length);」でOutOfMemoryExceptionをスローします。ISOにあるものを削除/追加するとき、それをパーツにロードできますか、それともファイル全体である必要がありますか?

UPDATE1:バッファを次のように制限しました:

FileStream fs = new FileStream(FileDialog.FileName, FileMode.Open, FileAccess.Read,FileShare.Read,4096);

しかし、それでも何もありません。

どうすればこれを操作できますか?

4

2 に答える 2

1

C#で大きなファイルを処理する通常の方法は、を使用FileStreamして一度に小さなチャンクを処理することです。ただし、FileStreamsを使用できるかどうかは、ライブラリによって異なります。

于 2012-11-14T09:01:19.563 に答える
1

メモリ マップト ファイルは、大きすぎてメモリに常駐できないファイルを効率的に処理する方法です。

于 2012-11-14T09:06:11.967 に答える