对于某些项目,我需要覆盖文件,但由于用户可能同时使用其他程序编辑此文件,因此我不会经常在运行时保留流,而是将所有数据保存在字节数组中。保存我的程序时,应该只保存它编辑的区域,而不是整个文件。我已经(非常糟糕)编写了一个例程来这样做,但它预计会很慢,我不知道如何在这里提高性能。我实际上只是循环遍历整个数组,并不像看起来那么聪明:
public Boolean Patch(string path)
{
FileStream fs = new FileStream(path, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
BinaryWriter bw = new BinaryWriter(fs);
if (fs.Length != this.rawdata.Length)
throw new ArgumentException();
for (int i = 0; i < this.rawdata.Length; ++i )
{
if (br.ReadByte() != rawdata[i])
{
fs.Position--;
bw.Write(rawdata[i]);
}
}
fs.Close();
return true;
}