替换多个文件中的文本但保留原文

时间:2012-08-28 11:41:51

标签: c# winforms

(Visual Studio C#2010,Windows Form App) 嘿,我想替换.txt文件中的一些单词。我知道怎么做但我不知道如何保留原始文件。我想将修改后的文本输出到输入文件的不同名称的文件中。否则,没有简单的方法进行比较,因为原始文件被覆盖......

这是我到目前为止所得到的。

this.openFileDialog1.Filter =`enter code here`"TEXT (*.xml;*.txt|";
this.openFileDialog1.Multiselect = true;
this.openFileDialog1.Title = "My text editor";
DialogResult dr = openFileDialog1.ShowDialog();

if (dr == DialogResult.OK)
{
    foreach (String file in openFileDialog1.FileNames)
    {
        try
        {
            StreamReader reader = new StreamReader(file);
            string content = reader.ReadToEnd();
            reader.Close();

            content = Regex.Replace(content, "play", "player");
            content = Regex.Replace(content, "game", "gamer");
            content = Regex.Replace(content, "walk", "walking");
            StreamWriter writer = new StreamWriter(file);
            writer.Write(content); writer.Close(); 
        }
        catch
        { // The user lacks appropriate permissions to read files, discover paths, etc. MessageBox.Show("Security error. Please contact your administrator for details.\n\n" + "Error message: Not found" ); } {
        }
      }
}

2 个答案:

答案 0 :(得分:3)

在您的代码中,您使用相同的文件进行读写 - 您只需要写一个与您正在阅读的文件不同的文件。

StreamReader reader = new StreamReader(file);
string content = reader.ReadToEnd();
reader.Close();

...

StreamWriter writer = new StreamWriter(some_other_file); // <--- here
writer.Write(content); 
writer.Close();

答案 1 :(得分:0)

确保这样做:

使用System.Text.RegularExpressions;