[英]Writing Large File To Disk Out Of Memory Exception
我正在嘗試寫入然后讀取一個大的隨機文件來計算磁盤速度。 我嘗試了幾種算法,但在嘗試寫入 1GB 文件時不斷出現 out 或 memory 異常。 這是我嘗試過的一些
方法一
byte[] data = new byte[8192];
Random rng = new Random();
using (FileStream stream = File.OpenWrite(filePath))
{
for (int i = 0; i < fileSizeMb * 128; i++)
{
rng.NextBytes(data);
stream.Write(data, 0, data.Length);
}
}
方法二
const int blockSize = 1024 * 8;
const int blocksPerMb = (1024 * 1024) / blockSize;
int count = fileSizeMb * blocksPerMb;
byte[] data = new byte[blockSize];
Random rng = new Random();
//using (FileStream stream = File.OpenWrite(filePath))
using (StreamWriter sw1 = new StreamWriter(filePath))
{
// There
for (int i = 0; i < count; i++)
{
rng.NextBytes(data);
sw1.BaseStream.Write(data, 0, data.Length);
//stream.Write(data, 0, data.Length);
}
}
閱讀
using (StreamReader sr = new StreamReader(filePath))
{
String line = sr.ReadToEnd();
}
方法一
byte[] data = new byte[8192];
Random rng = new Random();
using (FileStream stream = File.OpenWrite(filePath))
{
for (int i = 0; i < fileSizeMb * 128; i++)
{
rng.NextBytes(data);
stream.Write(data, 0, data.Length);
stream.Flush(); // BEETLE JUICE
}
}
方法二
const int blockSize = 1024 * 8;
const int blocksPerMb = (1024 * 1024) / blockSize;
int count = fileSizeMb * blocksPerMb;
byte[] data = new byte[blockSize];
Random rng = new Random();
using (StreamWriter sw1 = new StreamWriter(filePath))
{
// There
for (int i = 0; i < count; i++)
{
rng.NextBytes(data);
sw1.BaseStream.Write(data, 0, data.Length);
sw1.baseStream.Flush(); // BEETLE JUICE
}
}
閱讀
不要將整個文件讀入內存,一次只讀取 4096 個字節。 http://www.csharp-examples.net/filestream-read-file/ 上的示例代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.