1

我有为模拟创建变量的工具。当前的工作流程涉及将这些变量手动复制到模拟输入文件中。输入文件是标准平面文件,即不是二进制文件或 XML。我想自动将变量添加到平面输入文件中。

变量复制文件中的现有变量,例如

新变量:长度 10 高度 20 深度 30

旧变量: ... 体重 100 年龄 20 长度 10 身高 20 深度 30 ...

想让旧变量复制到新变量上。它们是平面输入文件的 200 行。

感谢您的任何见解。

PS这是在Windows上。

4

3 回答 3

1

如果您无法使用平面,那么您将无法使用老式的更新方式:从原始文件读取,写入临时文件,写入原始行或更改数据然后写入。要添加数据,请将其写入临时文件的适当位置;要删除数据,只需不要从原始文件中复制它。

最后,关闭这两个文件并将临时文件重命名为原始文件名。

或者,可能是时候考虑一​​个小型数据库了。

于 2009-04-09T01:40:42.187 回答
0

对于这样的事情,我会看一个简单的模板引擎。您将拥有一个带有预定义标记标记而不是变量值的基本模板,然后只需将所需的值与模板一起传递给您的引擎,它就会吐出结果文件,所有文件都存在且正确。Java 中有许多可用的开源模板引擎可以满足您的需求,我想这些东西也可以在您选择的语言中使用。你甚至可以毫不费力地自己动手。

于 2009-04-09T01:50:07.563 回答
0

请注意,在 Unix 下,可能会考虑使用mmap(),因为您可以使用诸如memmove()移动数据并添加新数据或truncate()如果文件更小的结果(您可能还想使用truncate()来增大文件)等功能。

在 MS-Windows 下,你可以MapViewOfFileEx()做同样的事情。不过,API 是不同的,而且我不确定会发生什么或如何增大/缩小文件(MSDN 还包括一个类似truncate()- 的函数,并且可能有效)。

当然,重要的是使用memcpy()memmove()正确地不要覆盖错误的数据或超出缓冲区。

于 2021-11-10T22:42:44.827 回答