我想尝试编写和读取一个大型的随机文件来计算磁盘速度。我已经尝试了几种算法,但在尝试写入1GB文件时始终出现内存溢出异常。以下是我尝试过的一些方法:
方法1
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();
}
OutOfMemoryException
吗?另外,StreamReader/Writer
用于读取/写入文本数据,对于二进制数据只需使用Stream
。 - Ivan Stoev