使用.NET中的StreamWriter
本文关键字:StreamWriter 中的 NET 使用 | 更新日期: 2023-09-27 17:53:47
我有一个控制台应用程序,它将已处理作业的详细信息写入.txt文件。我用这个代码来做:
StreamWriter jp = new StreamWriter(jobsProcessed);
jp.WriteLine(DateTime.Now.ToString());
jp.WriteLine(info);
jp.WriteLine("------");
jp.Close();
不幸的是,每次处理作业时,新的"信息"字符串都会替换以前的字符串。有什么方法可以在文本文件的末尾或开头添加新文本吗?
您可以使用StreamWriter构造函数(String,Boolean(,其中第二个布尔参数指示数据是否必须附加到已可用的数据。
同时避免调用Close
和使用using
语句
using(StreamWriter jp = new StreamWriter(jobsProcessed))
{
jp.WriteLine(DateTime.Now.ToString());
jp.WriteLine(info);
jp.WriteLine("------");
//jp.Close(); //NO NEED MORE
}
这样做的好处是,即使发生了可以发生的异常,流也将是Disposed
。
StreamWriter构造函数有一个重载,它接受第二个名为append
的参数;
using (StreamWriter jp = new StreamWriter(jobsProcessed, true))
{
jp.WriteLine(DateTime.Now.ToString());
jp.WriteLine(info);
jp.WriteLine("------");
}
最好将StreamWriter封装在如上所述的using
块中。
StreamWriter jp = new StreamWriter(jobsProcessed,true);
第二个参数
//Determines whether data is to be appended to the file. If the file exists
//and append is false, the file is overwritten. If the file exists and append
// is true, the data is appended to the file. Otherwise, a new file is created.
http://www.dotnetperls.com/streamwriterhttp://social.msdn.microsoft.com/Forums/zh/clr/thread/17cd8ccf-7e53-41de-b4cc-221da70405a4
只需修改:
StreamWriter jp = new StreamWriter(jobsProcessed);
对此:
StreamWriter jp = new StreamWriter(jobsProcessed, true);
// using (StreamWriter jp = new StreamWriter(jobsProcessed)) Overwrites, not good for you!
using (StreamWriter jp = new StreamWriter(jobsProcessed, true)) // Appends, good for you!
{
jp.WriteLine(DateTime.Now.ToString());
jp.WriteLine(info);
jp.WriteLine("------");
}
但你可以这样对你的代码进行语义化:
String[] content = File.ReadAllLines(jobsProcessed);
String[] newContent = new String[3];
newContent[0] = DateTime.Now.ToString();
newContent[1] = info;
newContent[2] = "------";
File.AppendAllLines(jobsProcessed, newContent);