c#编辑txt文件而不创建另一个文件(没有StreamWriter)

本文关键字:文件 没有 StreamWriter 另一个 编辑 txt 创建 | 更新日期: 2023-09-27 18:14:43

因为我使用非拉丁字母,如果我使用StreamWriter,字符是不正确的。

        String line;
        StreamReader sr = new StreamReader(@"C:'Users'John'Desktop'result.html");
        line = sr.ReadLine();
        while (line != null)
        {
            line = sr.ReadLine();
            if (line.Contains("</head>"))
            {
                line = "<img src='"result_files''image003.png'"/>" + line;
            }
        }
        sr.Close();

这里我正在编辑我想要在文件中编辑的字符串,但我没有将其保存在同一个文件中。怎么做呢?

c#编辑txt文件而不创建另一个文件(没有StreamWriter)

如果您使用接受编码的StreamWriter构造函数之一,您应该不会有任何错误字符的问题。你还跳过了你的阅读方法中的第一行。

Encoding encoding;
StringBuilder output = new StringBuilder();
using (StreamReader sr = new StreamReader(filename))
{
    string line;
    encoding = sr.CurrentEncoding;
    while ((line = sr.ReadLine()) != null)
    {
        if (line.Contains("</head>"))
        {
            line = "<img src='"result_files''image003.png'"/>" + line;
        }
        output.AppendLine(line);
    }
}
using (StreamWriter writer = new StreamWriter(filename, false, encoding))
{
    writer.Write(output.ToString());
}

我认为最简单的方法是

  1. 以读写方式打开文件

  2. 从文件中读取所有内容

  3. 在内存中进行修改

  4. 将其重写回文件,而不是附加..

你使用StreamReader。它的名字说明了它的功能。阅读!

不干净的代码

        if (File.Exists(fileName))
        {
            int counter = 1;
            StringBuilder sb = new StringBuilder();
            foreach (string s in File.ReadAllLines(fileName, Encoding.Default))
            {
                if (s.Contains("</head>"))
                {
                    s= "<img src='"result_files''image003.png'"/>" + line;
                }
                    sb.AppendLine(s);
                counter++;
            }
            File.WriteAllText(fileName, sb.ToString(), Encoding.Default);
        }