如何清除文件内容而不关闭它?

时间:2014-05-09 17:49:26

标签: c# file file-io stream

我有一个文件,由一行组成,我打算经常写。因此,我不想再关闭并重新打开它。相反,我想打电话来删除文件内容。

实现我的想法的一种方法是做这样的事情:

        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

有更好的方法吗?

2 个答案:

答案 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);

但是这会打开和关闭文件。