C# 使用BinaryWriter进行部分文件更新

C# 使用BinaryWriter进行部分文件更新,c#,file-io,C#,File Io,我正在寻找一种方法,通过该方法我可以进行部分更新,使用BinaryWriter向字典中的文件添加和删除键/值对。用下面的代码覆盖一个完整的文件似乎很简单,但由于我可能有很多记录,~26000条,我担心性能会成为一个问题。(我没有运行测试来确认这一点) 我需要它的上下文用于通过HttpModule访问的缓存图像文件的持久索引 我的出发点是: using (FileStream fileStream = File.Create(this.cachedIndexFile)) { using (

我正在寻找一种方法,通过该方法我可以进行部分更新,使用
BinaryWriter
向字典中的文件添加和删除键/值对。用下面的代码覆盖一个完整的文件似乎很简单,但由于我可能有很多记录,~26000条,我担心性能会成为一个问题。(我没有运行测试来确认这一点)

我需要它的上下文用于通过
HttpModule
访问的缓存图像文件的持久索引

我的出发点是:

using (FileStream fileStream = File.Create(this.cachedIndexFile))
{
    using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
    {
        // Put the count.
        binaryWriter.Write(this.Count);

        // Put the values.
        foreach (var pair in this)
        {
            binaryWriter.Write(pair.Key);
            binaryWriter.Write(pair.Value.ToString());
        }
    }
}
如果框架内有更好的替代方案,我会很乐意使用它们
BinaryWriter
是我所知道的唯一一件事,搜索备选方案证明是徒劳的


我发现这篇文章很难理解,可下载的项目文件更难理解。也许一个解决方案可以基于此?

根据评论中的建议,我认为数据库确实是最好的主意。我选择了SQLite。

部分更新几乎需要固定大小的字段。是否有最大键/值大小?你能用数据库代替吗?您需要多久替换一次该文件?在担心它之前,您绝对应该测试它。您可以创建一种文件目录结构,控制固定大小的块的数量、位置和大小,并根据需要使用此信息写入这些块(一种好的旧式
结构化存储
)。不过,我也建议使用数据库。。。这并不意味着现在是个大胖子…一个好的小数据库可以是SQLite。考虑到在今天的硬件上每秒可以轻松写入50MB,我怀疑写入26000个键/值对会花费很多时间。如果你需要做很多更新,就像其他人建议的那样,一个轻量级的数据库将是一个好主意。谢谢各位,我昨天做了一些测试,是的。。。这对我所需要的东西来说太慢了。我将使用db。我一直在看SQLite,但是文档已经过时了。不过我应该想想。