C# でファイルを扱う際に基本となるのが StreamReader
と StreamWriter
です。これらはテキストファイルを効率よく読み書きするためのクラスで、ファイル入出力処理の基本を理解するのに最適です。本記事では StreamReader
と StreamWriter
の基本的な使い方を紹介します。
StreamReaderでファイルを読み込む
StreamReader
を使うと、テキストファイルを 1 行ずつ、または全体をまとめて読み込むことができます。using
を使うことで、読み込みが終わったら自動的にリソースが解放されます。
using System;
using System.IO;
class Program
{
static void Main()
{
// ファイルを1行ずつ読み込む
using (StreamReader reader = new StreamReader("sample.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
ReadLine()
は 1 行ずつ読み込み、null
で終端を示します。ファイル全体を一度に読み込みたい場合は ReadToEnd()
が便利です。
using (StreamReader reader = new StreamReader("sample.txt"))
{
string text = reader.ReadToEnd();
Console.WriteLine(text);
}
StreamWriterでファイルに書き込む
StreamWriter
を使うと、テキストファイルにデータを書き込めます。既存ファイルがある場合は上書きされますが、第2引数に true
を渡すと追記モードになります。
using System;
using System.IO;
class Program
{
static void Main()
{
// 新規作成(または上書き)
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("1行目のテキスト");
writer.WriteLine("2行目のテキスト");
}
// 追記モード
using (StreamWriter writer = new StreamWriter("output.txt", true))
{
writer.WriteLine("追記されたテキスト");
}
}
}
エンコーディングを指定する
日本語を扱う場合、文字コードの違いで文字化けが起こることがあります。第3引数に Encoding.UTF8
を指定することで UTF-8 で書き込みができます。
using (StreamWriter writer = new StreamWriter("utf8.txt", false, System.Text.Encoding.UTF8))
{
writer.WriteLine("こんにちは、世界!");
}
まとめ
C# のファイル入出力の基本は以下の通りです。
StreamReader
… ファイルを読み込む(ReadLine
,ReadToEnd
)StreamWriter
… ファイルに書き込む(上書き・追記)using
構文でリソースを確実に解放する- 日本語を扱う場合は
Encoding
を意識する
StreamReader
と StreamWriter
を理解すれば、ログ保存や設定ファイルの読み込みなど、日常的なファイル操作がスムーズに行えるようになります。