如果不知道位置的话:
public class UpdateBytes
{
public byte[] data;
public UpdateBytes(string filename) {
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
data = new byte[(int) fs.Length];
int len = fs.Read(data, 0, data.Length);
if (len != data.Length) {
byte[] bb = new byte[len];
Buffer.BlockCopy(data, 0, bb, 0, len);
data = bb;
}
fs.Close();
}

public void Save(string filename) {
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Write);
fs.Write(data, 0, data.Length);
fs.Close();
} public void UpdateAndDelete(byte[] src, byte[] dest) {
int index = IndexOf(src);
byte[] newdata = new byte[data.Length - src.Length + dest.Length];
Buffer.BlockCopy(data, 0, newdata, 0, index);
Buffer.BlockCopy(dest, 0, newdata, index, dest.Length);
Buffer.BlockCopy(data, src.Length + index, newdata, index + dest.Length, data.Length - src.Length - index);
data = newdata;
} public void Update(byte[] src, byte[] dest) {
int index = IndexOf(src);
Buffer.BlockCopy(dest, 0, data, index, dest.Length);
} public int IndexOf(byte[] bt) {
for (int i = 0, k = 0; i < data.Length; i++) {
if (data[i] == bt[k]) {
k++;
} else if (k > 0) {
k = 0;
}
if (k == bt.Length) {
return i + 1 - bt.Length;
}
}
return -1;
}
}Update方法是覆盖,UpdateAndDelete是删除原来的插入新的