读取 Txt 文件的行,编辑特定行,然后将完整的 Txt 文件写入新文件 - C#

问题描述 投票:0回答:1

我想读取包含参数和值的 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;
}
c# replace streamreader readlines
1个回答
0
投票

这适合你吗?

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
© www.soinside.com 2019 - 2024. All rights reserved.