我想在几秒钟内创建一个巨大的虚拟文件,说1~2 GB.这是我用C#写的:
file.writeallbytes("filename",new byte[a huge number]);
Run Code Online (Sandbox Code Playgroud)
另一种表明状态的方式如下:
long FSS = din.TotalFreeSpace;
long segments = FSS / 10000;
long last_seg = FSS % 10000;
BinaryWriter br = new BinaryWriter(fs);
for (long i = 0; i < segments; i++)
{
br.Write(new byte[10000]);
this.label2.Text = "segments write :" + i.ToString() + "\r\n" + "segments remain :" + ((segments-i)+1).ToString();
Application.DoEvents();
}
br.Write(new byte[last_seg]);
this.label2.Text += "\r\nDone!";
br.Close();
Run Code Online (Sandbox Code Playgroud)
其中din是磁盘信息对象
使用这两种方法,需要2分钟或更长时间才能编写如此大的虚拟文件.有没有其他更快的方法呢?
问候.
mdb*_*mdb 81
只需创建文件,寻找适当大的偏移量,然后写一个字节:
FileStream fs = new FileStream(@"c:\tmp\huge_dummy_file", FileMode.CreateNew);
fs.Seek(2048L * 1024 * 1024, SeekOrigin.Begin);
fs.WriteByte(0);
fs.Close();
Run Code Online (Sandbox Code Playgroud)
这将产生一个2GB的文件,其内容基本上是不可预测的,应该可以满足您的需要.
Rob*_*ine 71
如果你不关心内容,那么到目前为止我所知道的最快的方式是 - 它几乎是即时的:
private void CreateDummyFile(string fileName, long length)
{
using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
fileStream.SetLength(length);
}
}
Run Code Online (Sandbox Code Playgroud)