通过附加在C#中逐行将文本写入文本文件的错误,但文件中没有任何内容

时间:2014-01-31 17:09:57

标签: c# windows windows-7 streamwriter console.writeline

我正在使用Win7 VS 2012上的C#。

我需要通过追加来逐行将文本写入文本文件。

 StreamWriter ofile = new StreamWriter(@"C:\myPath\my_data_output.txt", true);

  ofile.WriteLine(myString + "\t");

但是,输出文件中没有任何内容。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

将您的代码包含在using子句中。 这将调用StreamWriter类上的Dispose方法。 Dispose方法调用Flush方法,该方法写入流。

您的代码如下所示:

using (StreamWriter ofile = 
           new StreamWriter(@"C:\myPath\my_data_output.txt", true)
{
    ofile.WriteLine(myString + "\t"); 
}

您随时都可以调用flush方法。

答案 1 :(得分:0)

或更好的ofile.Close();关闭流并在完成后刷新它 MSDN link

答案 2 :(得分:0)

我建议使用System.IO.File静态类来处理刷新和处理,你只需要像这样调用AppendAllText方法:

System.IO.File.AppendAllText(@"C:\myPath\my_data_output.txt", myString + "\t");

如果你需要多次调用它,那么我的建议是使用StringBuilder:

StringBuilder sb = new StringBuilder();
while(condition)
{
    //Your loop body

    sb.AppendText(myString + "\t");
}
File.AppendAllText(@"C:\myPath\my_data_output.txt",sb.ToString());

答案 3 :(得分:0)

您有几种选择:

StringBuilder sb = new StringBuilder();
while(SOME CONDITION)
{
    sb.AppendLine("YOUR STRING"); 

}
// Set boolean to true to append to the existing file.
using (StreamWriter outfile = new StreamWriter(mydocpath + @"\AllTxtFiles.txt", true))
{
    outfile.WriteLine(sb.ToString());
}



//Append new text to an existing file. 
// The using statement automatically closes the stream and calls  
// IDisposable.Dispose on the stream object. 
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines.txt", true))
{
    file.WriteLine("Your line");
}

此外,请确保您对要写入的目录/文件具有写入权限,并且您正在以管理员身份运行应用程序。