1

一部のプロジェクトではファイルを上書きする必要がありますが、その間にユーザーが他のプログラムでこのファイルを編集する可能性があるため、実行時にストリームを頻繁に保持するのではなく、すべてのデータをバイト配列に保存します。プログラムを保存するとき、ファイル全体ではなく、編集した領域のみを保存する必要があります。そのためのルーチンを (非常に下手に) 書きましたが、遅いことが予想され、ここでパフォーマンスを改善する方法がわかりません。私は実際には配列全体をループしているだけで、見た目ほどスマートではありません。

    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;
    }
4

1 に答える 1