当前位置:  开发笔记 > 编程语言 > 正文

"可靠"文件适用于.NET

如何解决《"可靠"文件适用于.NET》经验,为你挑选了1个好方法。

应用程序需要一个计数器,该值将存储在文本文件中.有时它会在很短的时间内发生.

此测试代码经常重写文本文件(fe每100毫秒):

int counter = 0;

while (true)
{
    WriteToFile(counter);
    counter++;
    Thread.Sleep(100);
}

private void WriteToFile(int counter)
{
    byte[] buffer = Encoding.ASCII.GetBytes(counter.ToString());
    using (FileStream createFile = new FileStream("Counter.txt", FileMode.Create))
    {
        createFile.Write(buffer, 0, buffer.Length);
        createFile.Close();
    }
}

除了我们的"可靠测试"之外,它的工作基本上都很好 - 在应用程序运行时停止计算机供电.

令人不快的是 - 在文件中没有任何文本(应该是一个数字)但只有一两个空格字符.

它试图写的丢失的最后一个值是可以理解的,但是使文件不一致真的很糟糕......

尝试使用:

createFile.Flush();
createFile.Close();
createFile.Dispose();

GC.Collect();
GC.WaitForPendingFinalizers();

没有帮助.



1> Adam Ralph..:

我想到了各种选择: -

1)保留当前文件的临时副本,例如重命名旧文件,写入新文件,删除旧文件(或者用临时名称写新文件,删除旧文件,重命名新文件),但也许你也在写出文件通常是为了这种事情

2)编写多个文件,定期清理,例如0001.txt,0002.txt,0003.txt,...等等,每隔10秒删除除最后一个文件以外的所有文件.

3)多次写入同一文件,也许每隔10分钟定期创建一个新文件,再定期清理.

4)使用第三方日志记录平台,例如log4net,它可能防止断电等事情,并可以登录到各种目标,例如文件,数据库,IRC

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有