• ベストアンサー

C#でテキストファイルの更新がしたい

C#でテキストファイルを読込み、特定の文字を置換して上書きしたいです。 StreamReaderで読み込んで、変数に退避し、StreamWriterで書くのは出来ると思いますが もっと簡単に、読み込んでRewriteのようなコーディングって出来ないのでしょうか? A.Txt あああ いいい ううう ↓ 【あああ】を【えええ】にしてA.Txtを上書き A.Txt えええ いいい ううう 何かいい方法があれば教えてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

StreamReader/Writerは使わず直接Streamに対して入出力を行い, さらに文字の入出力はEncoding.GetStringやEncoding.GetBytesを経由して行うことで, できなくもないです。 当然,バイト数が変化しないという制限がかかりますが……。 ただし,上記の動作は非常に面倒です。 StreamReaderで読んでStreamWriterで書き出した方が,よっぽど簡単になります。

PUNCHI_PUNTA
質問者

お礼

ありがとうございます。 やはり、Readerで読んでWriterで書く方が簡単ですね。 特定の文字列が入ったテキスト行を更新したかったんです。 MicrosoftがProgram Filesに(x86)ってつけるから、そこを見ているパスを 書き換えるのが大変でした。

関連するQ&A

  • C#のテキストファイル読み込みについて

    C#のテキストファイル読み込みについて 2次元配列を使います(a[行][列]みたいに テキストファイルを1文字ずつ読み込みます。 そして、改行文字が見つかると行を1つずらします それを繰り返して最後まで読みこむと終わり そんなことをしたいです DOBON.NETでこんなの見つけたんですが 上の処理をしようと思っても、どこをいじればできるのかわかりませんでした //"C:\test.txt"をShift-JISコードとして開く System.IO.StreamReader sr = new System.IO.StreamReader( @"C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis")); //内容を一行ずつ読み込む while (sr.Peek() > -1) { Console.WriteLine(sr.ReadLine()); } //閉じる sr.Close(); よくわかるサイトとかあったら教えてください、お願いします

  • textファイルの内容の削除について(C#です)

    C#でプログラミングをしています。 WriteLineを使って、textに書き込みをしているのですが、最後いったんこのファイルに書き込んだ文字をすべて消去できるようにしたいんですが、どのように書けばいいですか? 例えば、 StreamWriter writer = new StreamWriter("E:\\sample\\sample.txt"); writer.WriteLine("りんご"); と書き込んで、最後に「りんご」という文字を全て消去できるようにしたいんです。初心者なので、あんまり分からないので教えて下さい(><)

  • テキストファイルの一部置換したファイルをたくさん作りたい

    テキストファイル(a.txt)があるのですが このファイルの一部の文字列aaaをbbbに置換したファイル(b.txt)を作りたいです。 また文字列aaaをcccに置換したファイル(c.txt)も作りたいです。 続けてd.txtやe.txt・・・と作っていきたいですが簡単にできるフリーソフトはないでしょうか? 現状はa.txtを開いてaaaをbbbに置換して、別名で保存するのを繰り返し(10回以上)するので大変です。 このようなことが楽にできるフリーソフトがあれば教えてください。

  • VB.NET テキストファイルにデータを書き込み

    テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとします。 このテキストファイルに「あいうえお」を先頭に追加で書き込みたいのですが、どうすればいいのでしょうか? あくまで「かきくけこ」を変数化せずファイルに直接、書き込む方法がある場合、教えてください。 'テキストファイルを開いたときの内容 あいうえお かきくけこ ちなみにですが、テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとして、 末尾に「さしすせそ」を追加で書込みする方法は下記の通りでした。 'ファイルを書き込み用に開く、指定したファイルがない場合は作成する dim fsFile As System.IO.FileStream = _ System.IO.File.OpenWrite("c:\test.txt") 'StreamWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = _ New System.IO.StreamWriter(fsFile) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine("さしすせそ") 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() fsFile.Close() 'テキストファイルを開いたときの内容 かきくけこ さしすせそ

  • ”System::IO::StreamReader”ってどういう意味ですか?

    Visual C++ 2008 Express Editionで、現在、600kバイト程度のバイナリファイルを読み込んで特定の番地のデータだけを取り出してそれをテキスト変換してテキストボックス内に表示させるというプログラムを作成しているのですが、このことをOKwaveでどのようにコーディングするかを教えてもらったところ、 System::IO::StreamReader^ sr=gcnew StreamReader(_T("sample.txt")); このような文を教えてもらったのですが、全く知識がなく何をやっているのかわかりません。 ”sr”というのは変数で、sample.txtからstreamReader関数でsample.txt内のデータをsr変数に 入れているという感じがしますが、”System::IO::StreamReader”とか”gcnew”とかの意味がよくわかりません。 どうかご教授お願いいたします。

  • ファイル読み取り(C#)

    C#でテキストファイルを開くとき System.IO.StreamReader dates = newSystem.IO.StreamReader("dates.txt"); としてもファイルが見つからなくてエラーが出るんですが、どうしてでしょう? ファイル名をフルパス名にしても同じです。

  • C# StreamReader,StreamWriter による文字化

    C# StreamReader,StreamWriter による文字化け お世話になります。 文字化けで悩んでいます。 Visual Studio 2008 C# にて、テキストファイルからデータを読んで別のテキストファイルに そのまま書き出す(もちろん実際の運用では加工するわけですが)処理で文字化けが起こります。 そのテキストファイル自身を C# で作れば問題はないのですが、メモ帳を使って書き込んだファイルでは 文字化けが起こります。 対処方法があれば教えてください。 以下はその実験に使ったコードです。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { // これは正常に書き込みできました StreamWriter sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test.txt"); sw.WriteLine("これはてすとです。"); sw.WriteLine("This is test."); sw.Close(); // これも正常に読み込め、書き込みもできました StreamReader sr = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test.txt"); sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\newtest.txt"); while (!sr.EndOfStream) { sw.WriteLine(sr.ReadLine()); } sr.Close(); sw.Close(); // 次はあらかじめメモ帳で作ったファイルを読んで、別のファイルに書き出します // これが文字化けします sr = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\test2.txt"); sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\newtest2.txt"); while (!sr.EndOfStream) { string dat = sr.ReadLine(); sw.WriteLine(dat); Console.WriteLine(dat); } sr.Close(); sw.Close(); } } }

  • C言語でテキストファイルの内容を置換して保存したい

    C言語でテキストファイルを読み込んで、特定のキーワードを 見つけたら置換して、保存したいと考えています。 ネット上でテキストファイルの内容を置換して、保存するよう な情報を検索したのですが、見つからず質問することにしました。 例) hoge.txtを読みこんで、FLG=0となっている行を、FLG=1というように置換させたい。 FLG=0 ↓ FLG=1

  • C#からテキストファイルへの出力について

    お世話になります。 .NET C#で開発をしております。 下記のコードで、テキストファイルへ書き出す際、 何故か最初の1レコード目が書き出されない現象が 起きてしまいます。 どなたかご親切な方、ご教示頂きたく宜しくお願い致します。     記 public static int Syori() { string MitxtPath = @"D:\MData"; string SotxtPath = @"D:\SData"; for (int x = 0; x < 2; x++) { if (x == 0) { FileName = "\\JF01.txt"; } else if (x == 1) { FileName = "\\JS05.txt"; } FileStream fs = new FileStream(MitxtPath + FileName, FileMode.Open); StreamReader r = new StreamReader(fs, Encoding.GetEncoding("Shift_JIS")); if (r.ReadLine() != null) { StreamWriter textFile; textFile = new StreamWriter(SotxtPath + FileName, true, Encoding.GetEncoding("Shift_JIS")); //レコードを書き込む string ZanData; string newData; byte[] bytesData; while ((OkuriNokosi = r.ReadLine()) != null) { bytesData = System.Text.Encoding.GetEncoding(932).GetBytes(ZanData); newData = System.Text.Encoding.GetEncoding(932).GetString(bytesData); textFile.WriteLine(newData); } textFile.Close(); r.Close(); } }

  • テキストファイルを保存しきれない

    いつもありがとうございます。 iniファイルを置換して上書き保存するのですが、置換して保存すると保存後のファイルの最後のほうが切れて保存しきれていませんでした。 保存前→100行 保存後→80行 な感じです。コードが悪いんだと思いますが、どなたか教えていただけないでしょうか。 Dim FileObj13 As Object Dim ListFile13 As String Try FileObj13 = New IO.StreamReader(Foldername & "\CUS\UISetup.ini", System.Text.Encoding.Default) ListFile13 = FileObj13.ReadToEnd() FileObj13.Close() Catch ex As Exception MessageBox.Show("指定のファイルが見つかりません", "エラー", _ MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try '置換 ListFile13 = ListFile13.Replace("K", "G") ListFile13 = ListFile13.Replace("C5", "45") 'ファイルを上書きで保存するための指定 Dim writer13 As New System.IO.StreamWriter(Foldername & "\CUSUISetup.ini", False, System.Text.Encoding.Default) writer13.Write(ListFile13) Label2.Text = "完了"

専門家に質問してみよう