StreamWriter.WriteLine()不工作(StreamWriter.WriteLine

2019-07-17 12:41发布

我试着写几行,一次一个,使用StreamWriter.WriteLine(不是静态).txt文件。

const string filename = "BasicTestInfo.txt";
        using (var writer = new StreamWriter(filename, false))
        {
            writer.WriteLine("{0} 350 200 200 10 2 28 20 200 2500 1200 1 1", Player1);
            writer.WriteLine("{0} 300 150 150 4 2 15 18 150 2500 1000 1 0", Player2);
            writer.WriteLine("{0} 200 140 450 25 14 10 70 4500 2500 750 1 1", Player3);
            writer.WriteLine("{0} 175 120 400 15 3 8 50 3000 2500 850 1 0", Player4);
            writer.WriteLine("{0} 300 100 300 8 1 4 30 1000 2500 1200 1 0", Player5);
            writer.WriteLine("{0} 450 310 450 20 5 5 35 1500 2500 700 1 1", Player6);
        }

每个玩家的对象是字符串cosntants。 如果我运行这个用不同的文件名(又名BasicTestInfo2.txt)它会在bin.Debug该文件,但它是空的。 我知道我在到达使用块内(我将在那里Console.WriteLine),我知道我要截断(这就是为什么我使用追加虚假虽然与真正的或没有参数更换假在一切都没有解决这个问题)。

最根本的问题是,即使文件被创建,有没有在文件中的文本行。

Answer 1:

是的,这是事实,在VB.net是没有必要用,但与C#你需要一个Writer.Flush调用强制写的默认设置这个(独家冲洗)。 当然 - Writer.Close()将迫使冲洗为好。 另外,我们可以设置的StreamWriter实例的自动刷新属性:

sw.AutoFlush = true;
// Gets or sets a value indicating whether the StreamWriter 
// will flush its buffer to the underlying stream after every  
// call to StreamWriter.Write.

来源: http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush(v=vs.110).aspx

需要注意的是:在“使用”结构将避免独家齐平,但很多人都在这里登陆只是这个问题的主题的基础上,这是唾手可得的成果时所面临的问题。



Answer 2:

关闭作家

writer.close();

这workedfor我。



Answer 3:

所示的代码看起来不错。

如果我猜的话,我怀疑有一个例外(可能是从一个狡猾ToString上实现Player ),你是吞咽地方。

通过代码一步看你去了每次连续发生了什么WriteLine ,以及是否去一路到结束using块没有错误。



Answer 4:

我有similair问题。

我固定它以这种方式,只要把你的串入的String.Format():

writer.WriteLine(String.Format("{0} 350 200 200 10 2 28 20 200 2500 1200 1 1", Player1));


文章来源: StreamWriter.WriteLine() is not working