我想读取包含参数和值的 Txt 文件,然后更新特定参数的值。我不知道更改之前参数的原始值,但有一个需要更改的参数值列表。将更改后的值的整个文件写入新文件是我的目标。
我目前能够找到参数,用更新的字符串替换行,然后写入新文件。
文本文件的结构:
Parameter1=1.5
Parameter2=2.0
Parameter3=0.5
替换 Parameter1 和 Parameter3 时新文件的输出:
Parameter1=0.7
Parameter3=3.0
理想输出:
Parameter1=0.7
Parameter2=2.0
Parameter3=3.0
private string ProcessParameterUpdates(string selectedDPVFile, string parameterName, string parameterNameAndValue)
{
List<string> dpvLines = new List<string>();
string dpvLine;
using (StreamReader reader = new StreamReader(selectedDPVFile))
{
string fileSelectedDirectory = Path.GetDirectoryName(selectedDPVFile);
string outputFileName = Path.Combine(fileSelectedDirectory, "UpdatedParameters.dpv");
while ((dpvLine = reader.ReadLine()) != null)
{
if (dpvLine.Contains(parameterName))
{
dpvLines.Add(dpvLine);
dpvLine = dpvLine.Replace(dpvLine, parameterNameAndValue);
if (File.ReadLines(outputFileName).Contains(parameterNameAndValue))
{
writeWindow.SelectionColor = Color.DarkOrange;
writeWindow.AppendText("Parameter already updated: " + parameterNameAndValue + "\n");
Debug.WriteLine("Parameter already updated: " + parameterNameAndValue + "\n");
dpvLine = reader.ReadLine();
writeWindow.ForeColor = Color.Black;
}
else
{
File.AppendAllText(outputFileName, dpvLine + "\n");
writeWindow.AppendText(dpvLine + "\n");
Debug.WriteLine(dpvLine + "\n");
}
}
}
reader.Close();
}
return selectedDPVFile;
}
这适合你吗?
static void Main(string[] args)
{
string inputFile = @"e:\test.txt";
string outputFile = @"e:\test2.txt";
Dictionary<string, string> updates = new Dictionary<string, string>();
for (int i = 0; i < args.Length; i++)
{
string[] parts = args[i].Split('=');
string param = parts[0].Trim();
string value = parts[1].Trim();
updates[param] = value;
}
string[] lines = File.ReadAllLines(inputFile);
List<string> updatedLines = new List<string>();
foreach (string line in lines)
{
if (line.Contains('='))
{
string[] parts = line.Split('=');
string param = parts[0].Trim();
string value = parts[1].Trim();
if (updates.ContainsKey(param))
{
value = updates[param];
}
updatedLines.Add($"{param}={value}");
}
else
{
updatedLines.Add(line);
}
}
File.WriteAllLines(outputFile, updatedLines);
}
我假设您会将参数作为参数传递给程序。 应该很容易更改为任何来源。 您可以这样运行程序:
ConsoleApp1.exe Parameter1=0.7 Parameter3=3.0