从.dat文件中删除或更改文本

时间:2013-04-19 11:48:00

标签: c#

我有一个程序可以将人员信息(姓名,姓氏,DOB等)保存到名为Records.dat的.dat文件中。哪个是从文件中删除一个人的信息并将其替换为“DELETED”或者只是完全删除信息的理想方法?

1 个答案:

答案 0 :(得分:1)

虽然我不确定你为什么不利用数据库(而且这并不重要,所以这不是什么大问题)我会建议逻辑删除(即不要真的要删除它。对于平面文件,我建议使用DELETED|作为行的前缀,因为在读取要列出和/或搜索的行时,这很容易解析。所以,如果你在内存中有这条线,它可能看起来像这样:

var line // you've already assigned this
line = string.Format("DELETED|{0}", line);

然后你需要将line写回文件。我不确定你是怎么写这个文件的,但是我们假设你知道该例子中该记录的位置:

int startIndex // you have already assigned this somewhere
               // it's the starting index of this line

using (FileStream fs = new FileStream("path to file", FileMode.Create, FileAccess.Write))
{
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
        bw.Position = startIndex
        bw.Write(Encoding.Default.GetBytes(line), 0, line.Length);
    }
}