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