DOBON.NET DOBON.NETプログラミング掲示板過去ログ

複数ファイルの中身を一括に置換

環境/言語:[環境:XP,使用言語:C#,.NET Framework2.0]
分類:[.NET]

私は今、C#で複数ファイルの一括置換のプログラムを作成しています。
したい事は、C:\testの下に
a.txt,b.txt,c.txtと3つのファイルがあり、それぞれの中身にabcという文字があれば、全てdefと置換というものです。
C:testのパスはアプリケーション構成ファイル(app.conf)で持たせています。
現在作成しているプログラムは、
C:\testの下のファイルでtxtファイルがあるか検索し、
.txtファイルならファイルを開いて、文字列の中身をstreamreaderで取り出し、
正規表現で置換をし、streamwriterで上書きというものなのですが、
あんまり良いプログラムと思っていません。
もっと簡単でよい方法は無いか?と思っています。
もっと良い方法を知っている方がいましたら教えてください。
よろしくお願いします。
■No18878に返信(haruさんの記事)
> 私は今、C#で複数ファイルの一括置換のプログラムを作成しています。
> したい事は、C:\testの下に
> a.txt,b.txt,c.txtと3つのファイルがあり、それぞれの中身にabcという文字があれば、全てdefと置換というものです。
> C:testのパスはアプリケーション構成ファイル(app.conf)で持たせています。
> 現在作成しているプログラムは、
> C:\testの下のファイルでtxtファイルがあるか検索し、
> .txtファイルならファイルを開いて、文字列の中身をstreamreaderで取り出し、
> 正規表現で置換をし、streamwriterで上書きというものなのですが、
> あんまり良いプログラムと思っていません。
> もっと簡単でよい方法は無いか?と思っています。
> もっと良い方法を知っている方がいましたら教えてください。
> よろしくお願いします。


haruさん、こんにちは。ぺがらぼです。

良いか悪いかの判断基準を考えてみると、そのプログラムにバグが有るか無いかで判断してみてはいかがでしょうか?
かなりのファイル件数があり、処理に時間がかかるのならまだしも、数件のファイルであるならば、正常に動いているプログラムを利用するのがベストとは言えませんが、ベターではないでしょうか?
■No18878に返信(haruさんの記事)
> .txtファイルならファイルを開いて、文字列の中身をstreamreaderで取り出し、
> 正規表現で置換をし、streamwriterで上書きというものなのですが、
> あんまり良いプログラムと思っていません。

それで良いです。

仕上がりファイル サイズが変わらないのであれば、
シークを使って置換した方が早いでしょうけど。
■No18901に返信(じゃんぬねっとさんの記事)
> ■No18878に返信(haruさんの記事)
>>.txtファイルならファイルを開いて、文字列の中身をstreamreaderで取り出し、
>>正規表現で置換をし、streamwriterで上書きというものなのですが、
>>あんまり良いプログラムと思っていません。
>
> それで良いです。
>
> 仕上がりファイル サイズが変わらないのであれば、
> シークを使って置換した方が早いでしょうけど。
ありがとうございました。
複数ファイルがある場合に開いて、置換し、閉じるというのを何度(例通りなら「×3」)もするのって、
あんまり綺麗なロジックでは無いと思っていました。
もっと良いロジックがあるのかな?と
一気に置換というのは不可能なのかな?と思い質問さしていただきました。
それで良いという事なので、今のやり方でいかしていただきます。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板