假设我有 2 个文本文件:
A.txt:
Param1: Value1
Param2: Value2
.
.
.
.
ParamM: ValueM
B.txt
Param1: Value1
Param2: Value2
.
.
.
.
ParamN: ValueN
- A.txt中的参数个数,即M可以大于、小于或等于B.txt中的参数个数strong>,即 N。
- 相同参数的值在 A.txt 和 B.txt 中不必相同。
- M 和 N 可能会达到最大值 200。
- 参数名称是任意的。他们没有数字。以上仅供说明。
我的目标是合并 A.txt 和 B.txt。如果发生任何冲突,我有一个文件/内存存储来指示哪个优先。
例如,
A.txt 可能如下所示:
Path: C:\Program\Files
Data: ImportantInfo.dat
Version: 1.2.3
Useless: UselessParameter.txt
和
B.txt 可能如下所示:
Path: C:\ProgramFiles
Data: NotSoImportant.dat
Version: 1.0.0
Useful: UsefulParameter.txt
最终的文本文件应该是这样的:
Path: C:\ProgramFiles
Data: ImportantInfo.dat
Version: 1.2.3
Useful: UsefulParameter.txt
现在我的思考方法是:
get a line from A.txt
get a line from B.txt
tokenize both by ":"
compare param names
if same
write A.txt's value to Result.txt
else if different
write A.txt's line into Result.txt
write B.txt's line into Result.txt /* Order doesn't really matter */
repeat above steps until end of both text files
当 A.txt 有特定参数而 B.txt 没有时,这种方法不会处理。如果存在一些轻量级库/API 来执行此操作,那将非常有帮助。我不是在寻找命令行工具(由于执行 system()
调用的开销)。
谢谢!
最佳答案
如果使用具有 Map 数据类型的语言,这会容易得多。 我会这样做:
读取B的所有内容并将key-value字符串存入内存
读取 A 并为每个键覆盖值(如果存在)或添加它(如果不存在)
将键值对输出到文件
关于c - 合并两个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953310/