C# - テキストファイルのアクセス
テキストファイルに対して1行単位で読み書きする例。
エンコード(文字コード)は環境のデフォルトのものを取得して設定している。設定を省略した場合はutf-8となる。特定のエンコードを指定する場合は、GetEncodingメソッドを使用する。
通常はusingを使用してストリームを生成する。そうすることでusingブロックを出たときのストリームのクローズ処理が自動で行われるようになる。
using System; using System.IO; using System.Text; //テキストファイルのアクセス class MyMain { static void Main(string[] args) { string ifile = "input.txt"; string ofile = "output.txt"; string path = @"C:\test\"; //環境のデフォルトエンコード(Shift_JIS)を取得 var enc = Encoding.Default; //エンコードを指定する場合 //var enc = Encoding.GetEncoding("shift_jis"); string[] buf = new string[10]; int i = 0; //ファイルから1行ずつ読み込み var reader = new StreamReader(path + ifile, enc); while( !reader.EndOfStream && i < 10) { buf[i++] = reader.ReadLine(); } //readerのクローズ reader.Close(); i = 0; //ファイルへ1行ずつ書き出し //第2引数trueは、追加書き込みモード //usingを使用することでブロック脱出時に //writerのクローズ(オブジェクトの破棄)が保証される using( var writer = new StreamWriter(path + ofile, true, enc) ) { while(buf[i] != null) { Console.WriteLine(buf[i]); writer.WriteLine(buf[i++]); } } } }