【发布时间】:2014-06-27 13:42:29
【问题描述】:
我有一个文件,由一行组成,我打算经常写它。因此,我不想一遍又一遍地关闭并重新打开它。相反,我想调用一些会删除文件内容的东西。
实现我的想法的一种方法是执行以下操作:
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
有没有更好的方法来做到这一点?
【问题讨论】:
-
你想做什么?
-
你测试过吗,你确定打开文件与数据库中的其他东西相比是“昂贵的”吗?
-
@ScottChamberlain 是的。据我所知,打开和关闭文件是您可以对文件执行的最昂贵的操作之一
-
所以你从来没有用你的应用程序测量过它,你只是在预感吗?我建议使用代码分析器对其进行测量,看看它是否需要您认为需要的时间(不,更可能的是,执行
Flush()操作是您可以对文件执行的最昂贵的操作)。