C#_ファイルを読み込み、置換して書き出す

サクラエディタGrep 置換が想定通りに動かないので、C# で書いた。

 

  1. GetFiles で指定ディレクトリ内のファイルパスを取得
    サブディレクトも含むか否かは GetFiles の第三引数に
    SearchOption 型を指定するもよう。
  2. StreamReader.ReadToEnd でファイル内の全ての文字列を読み込む
     File.ReadAllText でも可かと。
    StreamReader.ReadLine は 1 行ずつ読み込み。
  3. 読み込んだ文字列を Replace で置換
  4. StreamWriter でファイルに書き出して閉じる。
    StreamWriter の第二引数が false だと上書き。 true だと末尾に追加。

 

※ using System.IO; 必要

    string befor = "置換前";
    string after = "置換後";
    string folderPath = @"パス"; //後ろに \ は不要。
    string extension = "*.*";

    foreach (var file in Directory.GetFiles(folderPath, extension))
    {
        StreamReader sr = new StreamReader(file, Encoding.GetEncoding("Shift_JIS"));
        string s = sr.ReadToEnd();
        sr.Close();

        s = s.Replace(befor, after);

        StreamWriter sw = new StreamWriter(
            file,
            false,
            System.Text.Encoding.GetEncoding("Shift_JIS")
            );

        sw.Write(s);
        sw.Close();
    }
    MessageBox.Show("End Replace");

 

 

こちらから。
http://hissoritobotobo.blog48.fc2.com/blog-entry-144.html
http://korekurai.com/csharpaspnet/how-to-find-and-replace-string-in-text-file.html
http://jeanne.wankuma.com/tips/csharp/directory/getfiles.html
https://msdn.microsoft.com/ja-jp/library/system.io.streamreader.readtoend(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/f5f5x7kt(v=vs.110).aspx
https://msdn.microsoft.com/ja-jp/library/ms143316(v=vs.110).aspx

 

 

以上。