c# - 使用 BinaryWriter 查找和插入数据

标签 c# file-io binary-data

背景:

我是 C# 的新手,目前正在从事一个主要用于学习的项目。我正在创建一个库来处理 Quake 和 Quake II 使用的 .PAK 文件。我可以很好地读取和提取它们,也可以写入空白存档,并且我正在将数据写入存档。

可在此处找到基本规范以供引用:http://debian.fmi.uni-sofia.bg/~sergei/cgsr/docs/pak.txt

问题:

我想查找二进制数据部分的末尾并从给定文件中插入数据。我在创建空文件时在方法中使用 BinaryWriter,所以这就是我要用于插入的内容。根据我的发现,使用 BinaryWriter 查找和写入将在给定位置写入并覆盖现有数据。

我的目标是在不丢失任何现有数据的情况下简单地在给定点插入数据。如果这不可能,我想我需要提取包含单个文件信息(名称、偏移量、长度)的整个索引,添加二进制数据,然后附加索引并附加我正在编写的文件的信息。

有什么想法或建议吗?

最佳答案

您不能使用 C# IO 类直接将数据插入文件。最简单的方法是将其读入缓冲区并操作缓冲区,或者将第一部分写入临时文件,然后插入新数据,然后写入文件的其余部分,然后重命名。 或者,您可以在文件末尾附加一些数据并将所有内容向上移动以在要插入数据的位置创建适量的可用空间。

看看http://www.codeproject.com/Articles/17716/Insert-Text-into-Existing-Files-in-C-Without-Temp

关于c# - 使用 BinaryWriter 查找和插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688996/

相关文章:

perl - 在 Perl 中将二进制数据拆分为字节数组

c# - 在 WCF 客户端中传递的多个参数不起作用(即使包装了 WebMessageBodyStyle)

c# - 一个实体上的多个属性需要多对多关系 EF Core 2.2

c# - 在C#中从和弦中提取音符

c++ - 二进制读/写运行时失败

Java 有效地读取大文件(~100GB)

C++ 二进制文件 - 写入整数 - 奇怪的行为

c# - VC++属于托管类还是非托管类?

c - 将文本文件读入结构

c# - Ascii 范围考虑二进制文件?