说我有2个文本文件:
A.TXT:
Param1: Value1
Param2: Value2
.
.
.
.
ParamM: ValueM
B.txt
Param1: Value1
Param2: Value2
.
.
.
.
ParamN: ValueN
我的目标是合并 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()
调用的开销)。
谢谢!
答案 0 :(得分:2)
在具有Map数据类型的语言中,这将更加容易。 我会这样做:
读取所有B并将键值字符串存储在内存中
读取A并为每个键覆盖值(如果存在)或添加(如果不存在)
将键值输出到文件