我有一个application.properties文件,格式如下
application.name=some thing
application.version=4.1.0.1
application.list=abc.def, ghi.jkl
现在我的任务是将mno.pqr附加到application.list 我可以使用
阅读它 $AppProps = convertfrom-stringdata (get-content .\application.properties -raw)
我更改了Application.list
中的$AppProps
值。
如何将其保存回原始的Application.properties文件..?
答案 0 :(得分:2)
您可以尝试以下操作:
$AppProps.GetEnumerator() | % { "$($_.Name)=$($_.Value)" } > .\application.properties
请注意,>
默认情况下会创建UTF-16 LE文件(带BOM),因此如果您想明确控制编码,请管道Out-File
或Set-Content
请改用-Encoding
参数。
功能
不幸的是,没有补充ConvertTo-StringData
,所以你必须创建自己的输出格式(哈希表的默认输出格式不作为属性文件工作):
ConvertFrom-StringData
会返回一个哈希表,因此$AppProps
包含一个哈希表。
$AppProps.GetEnumerator()
通过管道逐个发送哈希表的键/值对(类型为[System.Collections.DictionaryEntry]
的字典条目)。
.GetEnumerator()
调用是必要的,因为PowerShell将哈希表视为管道中的单个对象。 % { "$($_.Name)=$($_.Value)" }
构造每个键/值对的输出字符串。
警告源于使用ConvertFrom-StringData
读取属性文件:
排序丢失:由于散列表中无法保证密钥排序,因此重写文件时属性通常会以不同的顺序出现(至少第一次)。
评论丢失:输入文件中的注释(第一个非空白字符为#
的行)在读取时会被静音跳过,因此当您重写文件时,它们会丢失它们