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,但是文档已经过时了。不过我应该想想。