VB.NET用字节填充大文件

时间:2012-10-09 22:05:41

标签: vb.net file-io

我正在创建一个临时文件来存储一个无法容纳在内存中的巨大矩阵。我想首先将临时文件写入磁盘,这样我就可以使用流对象寻找文件中的位置。我已经知道我需要的确切尺寸了。

最简单的写法是什么,比方说,2千兆的零?

我尝试一次写一个字节,这真的很慢。我也尝试过编写字节数组chuncks而且速度要快得多,但我必须对数学原因感到厌烦,因为我无法将最终大小变为我期望的结果。

2 个答案:

答案 0 :(得分:3)

BinaryWriter有一个方法Seek,如果此位置位于文件末尾之外,您还可以在文件上设置任意位置。
如果在此位置写入一个简单的字节,操作系统将调整文件大小以允许在请求的位置写入。

    Dim testfile as String = "d:\temp\testfile.bin"
    Dim fs As FileStream = File.Create(testfile)
    Dim utf8 As UTF8Encoding = new UTF8Encoding()
    Dim bw As BinaryWriter = new BinaryWriter(fs, utf8)
    bw.Seek(1500, SeekOrigin.Begin) 'only 1500 bytes just for test
    bw.Write(255)
    fs.Close()

答案 1 :(得分:0)

这不是非常有效但是我在38秒内编写了一个2gig文件,首先在调试模式下编译...

StringBuilder s = new StringBuilder();
for (int i = 0; i <= 4000; i++) s.Append("0");

System.Diagnostics.Stopwatch t = System.Diagnostics.Stopwatch.StartNew();
using (StreamWriter file = new StreamWriter(@"c:\temp\temp.text"))
{
      for (long i = 0; i < 2147483648; i+= 4000)
         file.Write(s.ToString());
}
this.label1.Text = t.Elapsed.TotalSeconds.ToString();
根据谷歌,

2演出为this much

所以,我不知道,你想要多快这个?