入出力

スポンサーリンク

テキストファイルの読み込み

テキストファイルからテキストを読み込むには,StreamReader クラス (System.IO 名前空間) を利用します。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        StreamReader reader =
            new StreamReader("hoge.txt");  // ファイルを開く
        string text = reader.ReadToEnd();  // テキストを読み込む
        reader.Close();                    // ファイルを閉じる
    }
}

System.IO 名前空間
StreamReader クラス [MSDN]

StreamReader コンストラクタ

ファイルを開きます。

StreamReader(string path)

ReadToEnd メソッド

ファイルのテキストを最後まで読み込みます。

string ReadToEnd()

Close メソッド

ファイルを閉じる。

void Close()

StreamReader クラスは,デフォルトでは UTF-8 でファイルを読み込みます。
ファイルのエンコーディングがわかっているときは,エンコーディングを指定できるコンストラクタのオーバーロードバージョンも利用できます。

テキストファイルへの書き込み

テキストファイルにテキストを書き込むには,StreamWriter クラス (System.IO 名前空間) を利用します。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        StreamWriter writer =
            new StreamWriter("piyo.txt");           // ファイルを開く
        writer.Write("This is some sample text.");  // テキストを書き出す
        writer.Close();                             // ファイルを閉じる
    }
}

System.IO 名前空間
StreamWriter クラス [MSDN]

StreamWriter コンストラクタ

ファイルを開きます。

StreamWriter(string path)

Write メソッド

ファイルにテキストを書き込む。

void Write(string text)

Close メソッド

ファイルを閉じる。

void Close()

using 文

次のように using 文を使うと,ブロックの最後で自動的に Dispose メソッドが呼び出され,リソースの解放漏れを防ぐことができます。
この構文は IDisposable インタフェースを実装しているクラスに対して利用できます。

using (StreamReader reader = new StreamReader("hoge.txt"))
{
    text = reader.ReadToEnd();
}

以下のように,ブロックを導入しない構文も使うことができます (C# 8.0 以降)。

using StreamReader reader = new StreamReader("hoge.txt");
text = reader.ReadToEnd();

これらの using 文は,リソースを明示的に解放する以下の try-finally 文のシンタックスシュガーと考えることができます。

StreamReader reader = new StreamReader("hoge.txt");
try
{
    text = reader.ReadToEnd();
}
finally
{
    if (reader != null)
    {
        reader.Dispose();
    }
}
スポンサーリンク