如何在不关闭文件的情况下清除文件内容

本文关键字:文件 情况下 清除 | 更新日期: 2023-09-27 18:02:40

我有一个文件,由一行组成,我打算经常编写它。正因为如此,我不想一次又一次地关闭和重新打开它。相反,我想调用一些可以擦除文件内容的东西。

完成我所想到的一种方法是这样做:

        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

有更好的方法吗?

如何在不关闭文件的情况下清除文件内容

可以使用FileStream.SetLength()截断,也可以使用FileStream.Position和/或FileStream.Seek()移回文件的开头。这将不需要昂贵的流关闭和重新打开。

你可以重写文件:http://msdn.microsoft.com/en-us/library/92e05ft3%28v=vs.110%29.aspx

File.WriteAllLines(String filePath, String[] linesToWrite);