如何使用BinaryWriter编写大文件

时间:2012-07-18 12:59:05

标签: c# binaryfiles binarywriter

我有一些编写大型二进制文件的程序。我遇到了这个问题:有时我的程序在文件写入时崩溃而没有抛出任何错误(块catch不执行。我编写了一些测试控制台应用程序来查找并解决这个问题。这样的事情:

static void Main(string[] args)
{
    for (int j = 0; j < 100; j++)
    {
        string fileName = @"D:\Users\nimci\Desktop\buf\"+j+".bin";
        using (var output =
            new BinaryWriter(File.Open(fileName, FileMode.Create, FileAccess.Write)))
        {
            for (int i = 0; i < 4000000; i++)
            {
                output.Write(i);
                //if(i%1000==0)   Thread.Sleep(1);
            }
        }
    }
}

我有这样的结果:有些文件有0个大小。例如,数字为8,10,15,17,......的文件

在我家(功能较弱的)计算机上,所有文件都已正确写入,在我的工作计算机上,其中一些文件大小为0。如果我取消注释Thread.Sleep(1); (或以其他方式减慢我的程序)所有文件也在我的工作计算机上正确,但这样的“修复”在我的服务器计算机上不起作用。 任何人都可以解释错误发生的原因以及如何解决? 我尝试使用try-cath-finally而不是使用,但catch块不会捕获此错误。

1 个答案:

答案 0 :(得分:0)

尝试添加Flush:

        for (int i = 0; i < 4000000; i++)         
        {         
            output.Write(i);         
            //if(i%1000==0)   Thread.Sleep(1);         
        }  
        output.Flush();