[英]Appending text in C#
将方法更改为AppendText时,例如writeout.AppendText(firstline),我得到StreamWriter不支持...
StreamWriter writeout = new StreamWriter(path);
writeout.WriteLine(firstline);
writeout.Close();
我想要覆盖文本文件中的“第一行”,而不是覆盖文本文件中的现有数据
更改StreamWriter writeout = new StreamWriter(path);
到StreamWriter writeout = new StreamWriter(path, true);
。
请参阅http://msdn.microsoft.com/zh-cn/library/aa328969%28v=vs.71%29.aspx 。
或者,您可以使用File.AppendText
,例如StreamWriter writeout = File.AppendText(path)
。
甚至只是File.AppendAllText
,例如File.AppendAllText(path, firstline)
。
您应该使用显式选项创建StreamWriter,以便能够附加到文件。 否则,它将始终创建一个新的。 在未创建要添加的StreamWriter的情况下尝试调用Append会给出您描述的错误。
我不确定,但我认为您可以做到:
StreamWriter写出=新的StreamWriter(path,true);
使StreamWriter具有附加功能。
希望这可以帮助。
您可以使用StreamWriter构造函数的第二个参数。
StreamWriter writeout = new StreamWriter(path, true);
使用构造函数StreamWriter writeout = new StreamWriter(path, true);
StreamWriter writeout = new StreamWriter(path,true); //true indicates appending
writeout.WriteLine(firstline);
writeout.Close();
使用附加的布尔参数创建StreamWriter,该布尔参数指定是否附加到现有文件:
StreamWriter writeout = new StreamWriter(path, true);
首先通过将StreamWriter.BaseStream.Position设置为流的末尾,找到流的末尾,然后照常继续。
那怎么用呢?
var lines = new List<string>();
// load lines
System.IO.File.AppendAllLines(path, lines);
try
{
StringBuilder sb = new StringBuilder();
StreamReader sr = new StreamReader(Path);
sb.AppendLine(sr.ReadToEnd());
sb.AppendLine("= = = = = =");
sb.AppendLine(fileName + " ::::: " + time);
sr.Dispose();
if (sw == null)
{
sw = new StreamWriter(Path);
}
sw.Write(sb.ToString());
sw.Dispose();
}
catch (Exception e)
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.