我有一个文件,由一行组成,我打算经常写。因此,我不想再关闭并重新打开它。相反,我想打电话来删除文件内容。
实现我的想法的一种方法是做这样的事情:
int i0 = 0;
using (var f = File.OpenWrite("testfile.txt"))
{
while (true)
{
f.Position = 0;
using (var sw = new StreamWriter(f, Encoding.UTF8, 1024, true))
{
if (i0 == 1)
{
sw.WriteLine("short line");
break;
}
if (i0==0)
{
sw.WriteLine("this is a veeeery long test line");
i0++;
}
sw.Flush();
}
}
}
但是,这将导致文件包含以下内容:
short line
eeery long test line
虽然我可以使用它(我只需要第一行的内容),但感觉很麻烦。
相反,我想最终得到文件内容:
short line
有更好的方法吗?
答案 0 :(得分:2)
您可以使用FileStream.SetLength()
截断,以及FileStream.Position
和/或FileStream.Seek()
移回文件的开头。这不需要昂贵的关闭和重新打开流。
答案 1 :(得分:0)
您可以重写该文件: http://msdn.microsoft.com/en-us/library/92e05ft3%28v=vs.110%29.aspx
File.WriteAllLines(String filePath, String[] linesToWrite);
但是这会打开和关闭文件。