添加和删除文件片段以不完全重写它的最有效方法是什么
What is the most effecient way of adding and removing pieces of file to not rewrite it fully?
例如,如果我想删除文件中间的 10 个字节或在中间添加 10 个字节,是否可以在不完全重写文件的情况下做到这一点?
我想要一个最快完成此任务的解决方案。
我使用 C#,但解决方案也可能在 C 或 C++ 中。
您必须复制整个文件,省略或插入相关字节。 这是一个操作系统约束;由于文件在磁盘上的布局方式,根本不可能支持这种类型的操作(至少对于像Unix或Windows使用的简单文件系统)。
尝试使用 MapViewOfFile 的方法。可能有 C# 绑定。
然后,您可以将文件视为应该很快的内存。
如果你想在同一地方删除和添加==>修改/更新
在 R+ 模式下打开文件,这将让您更改为读取和写入两个操作都可以执行。然后
将文件流移动到要修改的位置,并在那里添加多少字节您不需要删除 10 个字节。需要写入 10 个字节。这将覆盖当前位置的十个字节。除了删除旧的十个字节并添加新的十个字节之外,什么都没有。
如果要删除并且不想添加任何内容,请复制到新文件,除了十个字节。
如果只想添加 ,将流位置移动到末尾,写入十个字节。
你需要fseek()
相关文章:
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 这是什么代码?为什么它有效?C++
- 找到对称矩阵的最大元素的最有效算法是什么
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 释放 std::vector 中指针内存的最有效方法是什么?
- 从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?
- 有效创建数字签名的正确方法是什么?我可以使用DSA_sign_setup()吗?
- 填充红黑树的最有效方法是什么?
- 释放分配给大量矢量的内存的最有效方法是什么?
- 在使用 0MQ 异步接收时异步发送数据的最有效方法是什么?
- 在 c++ 中使用右值设置类变量的最有效方法是什么
- 检查字符串是否与可能的输入之一匹配的最有效方法是什么?
- 将随机数放入缓冲区以写入文件的有效方法是什么?
- 从向量中提取最小值、最大值和中位数的最有效方法是什么