C#でファイルの読み込み/書き出し

今回はC#で行う、ファイルの読み込み/書き出しについてまとめてみました。

ファイルの読み込み(1行づつ)

// 結果格納変数
StringBuilder strBuff = new StringBuilder();
string result = string.Empty;

// ファイルの存在チェック
if (System.IO.File.Exists(@"C:\hogehoge.txt")) {

	// StreamReaderでファイルを読み込む
	System.IO.StreamReader reader = (new System.IO.StreamReader(@"C:\hogehoge.txt", System.Text.Encoding.GetEncoding("shift_jis")));

	// 読み込みできる文字がなくなるまで繰り返す
	while (reader.Peek() >= 0) {
		// ファイルを 1 行ずつ読み込む
		strBuff = reader.ReadLine();
		// 読み込んだものを追加で格納する
		result += strBuff + System.Environment.NewLine;
	}

	// 閉じる (オブジェクトの破棄)
	reader.Close();
}

// 結果を表示する
Message = result;

ファイルの読み込み(全行を1回で読み込む)

// 結果格納変数
string result = string.Empty;

// ファイルの存在チェック
if (System.IO.File.Exists(@"C:\hogehoge.txt")) {

	// StreamReaderでファイルを読み込む
	System.IO.StreamReader reader = (new System.IO.StreamReader(@"C:\hogehoge.txt", System.Text.Encoding.GetEncoding("shift_jis")));

	// ファイルの最後まで読み込む
	result = reader.ReadToEnd();

	// 閉じる (オブジェクトの破棄)
	reader.Close();
}

// 結果を表示する
Message = result;

ファイルの読み込みポイント

ファイルが存在しない場合にエラーで落ちてしまうので、”if (System.IO.File.Exists(@"C:\hogehoge.txt")) {” でファイルの存在チェックを行います。

ファイルの書き出し(上書き)

// StreamWriter でファイルを初期化
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\hogehoge.txt", false, System.Text.Encoding.GetEncoding("shift_jis"));

// hogehoge.txtに書き込まれていても、上書きで書き出す
sw.Write("今日は沢山歩きました。\r\n");

// 閉じる (オブジェクトの破棄)
sw.Close();

ファイルの書き出し(追記)

// StreamWriter でファイルを初期化
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\hogehoge.txt", true, System.Text.Encoding.GetEncoding("shift_jis"));

// hogehoge.txtに書き込まれている行末に、追加で書き出す
sw.Write("今日は沢山歩きました。\r\n");

// 閉じる (オブジェクトの破棄)
sw.Close();

ファイルの書き出しポイント

ファイルの書き出し(上書き)と、ファイルの書き出し(追記)の違いは、

new System.IO.StreamWriter(@"C:\hogehoge.txt", false, System.Text.Encoding.GetEncoding("shift_jis"));

の、true/falseの違いだけです。