文本文件中C#中的StreamWriter限制

Sno*_*all 6 c# limit streamwriter text-files

我有一个包含100行的数组列表.当我尝试将其导出到文本文件(txt)时,输出只有84行,它停在第84行的中间.当我查看文件大小时,它显示了非常清晰的4.00KB,好像对流编写器有某种限制.我尝试使用不同的参数等,但它一直在发生.

这是代码:

FileStream fs = new FileStream(path, FileMode.Create);

        StreamWriter sw = new StreamWriter(fs);
        ArrayList chartList = GetChart(maintNode);

        foreach (var line in chartList)
        {
            sw.WriteLine(line);
        }

        fs.Close();
        Console.WriteLine("Done");
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

Sri*_*vel 9

您需要调用StreamWriter.Flush或设置StreamWriter.AutoFlush为true.也就是说,如果你使用using法令,一切都应该正常.

using(StreamWriter sw = new StreamWriter(fs))
{
    ArrayList chartList = GetChart(maintNode);    
    foreach (var line in chartList)
    {
        sw.WriteLine(line);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用语句调用Dispose将缓冲区刷新到FileStream并关闭文件流.所以你不需要手动关闭它.

然后我建议List<T>结束ArrayList.ArrayList不应该使用它,它不是类型安全的,如果你在.Net2.0或更高版本,应该避免.

还要考虑使用File.WriteAllLines方法,这样就不需要这么多行代码了.一切都由WriteAllLines方法本身管理.