我有为模拟创建变量的工具。当前的工作流程涉及将这些变量手动复制到模拟输入文件中。输入文件是标准平面文件,即不是二进制文件或 XML。我想自动将变量添加到平面输入文件中。
变量复制文件中的现有变量,例如
新变量:长度 10 高度 20 深度 30
旧变量: ... 体重 100 年龄 20 长度 10 身高 20 深度 30 ...
想让旧变量复制到新变量上。它们是平面输入文件的 200 行。
感谢您的任何见解。
PS这是在Windows上。
如果您无法使用平面,那么您将无法使用老式的更新方式:从原始文件读取,写入临时文件,写入原始行或更改数据然后写入。要添加数据,请将其写入临时文件的适当位置;要删除数据,只需不要从原始文件中复制它。
最后,关闭这两个文件并将临时文件重命名为原始文件名。
或者,可能是时候考虑一个小型数据库了。
请注意,在 Unix 下,可能会考虑使用mmap()
,因为您可以使用诸如memmove()
移动数据并添加新数据或truncate()
如果文件更小的结果(您可能还想使用truncate()
来增大文件)等功能。
在 MS-Windows 下,你可以MapViewOfFileEx()
做同样的事情。不过,API 是不同的,而且我不确定会发生什么或如何增大/缩小文件(MSDN 还包括一个类似truncate()
- 的函数,并且可能有效)。
当然,重要的是使用memcpy()
或memmove()
正确地不要覆盖错误的数据或超出缓冲区。