Categories: Cシャープ

C#でファイルの内容を一気に読み込む!File.ReadAllTextの使い方と活用例

C#でファイル操作を行う際に、「ファイルの内容をすべて読み込んで文字列として扱いたい」と思ったことはありませんか?
そんな時に便利なのが、File.ReadAllTextメソッドです。

このメソッドは、ファイルの中身を1行ずつ読み込むことなく、まるごと文字列として一度に取得できるシンプルで強力な方法です。
本記事では、File.ReadAllTextの基本的な使い方から、実践的な活用例、エラー処理の方法までを詳しく解説します。
初心者の方にもわかりやすいようにコード例を交えて紹介していきます。


File.ReadAllTextとは?

File.ReadAllTextは、.NETのSystem.IO名前空間にある静的メソッドで、指定したファイルの全内容を一度に文字列として読み込むための関数です。

基本構文

string text = File.ReadAllText("ファイルパス");

このメソッドを使うことで、わずか1行でファイル全体のテキストを変数に格納できます。


実際の使用例:基本的な使い方

次のコードは、sample.txtというテキストファイルを読み込んで、その中身をコンソールに出力する例です。

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "sample.txt";
string content = File.ReadAllText(filePath);
Console.WriteLine(content);
}
}

非常にシンプルでわかりやすいですね。
このように、ファイルの内容を一括で取得できるのがFile.ReadAllTextの魅力です。


文字コードを指定したい場合

読み込むファイルがUTF-8以外のエンコーディングで保存されている場合、文字化けが起こることがあります。
そのようなときは、エンコーディングを明示的に指定することができます。

using System;
using System.IO;
using System.Text;

class Program
{
static void Main()
{
string filePath = "sjis-file.txt";
string content = File.ReadAllText(filePath, Encoding.GetEncoding("Shift_JIS"));
Console.WriteLine(content);
}
}

このようにすることで、Shift_JISやUTF-16などの特定の文字コードにも対応できます。


ファイルが存在しない場合の対処法(例外処理)

ファイルが存在しない場合、File.ReadAllTextFileNotFoundExceptionをスローします。
安全なプログラムを書くためには、例外処理を行うことが重要です。

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "notfound.txt";

try
{
string content = File.ReadAllText(filePath);
Console.WriteLine(content);
}
catch (FileNotFoundException ex)
{
Console.WriteLine("ファイルが見つかりませんでした: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("エラーが発生しました: " + ex.Message);
}
}
}

このように、例外処理を加えることで、予期せぬエラーに強いアプリケーションが作れます。


ReadAllTextとReadAllLinesの違い

File.ReadAllTextと似た名前のメソッドにFile.ReadAllLinesがあります。
違いは、返される型と用途にあります。

  • File.ReadAllText: すべてのテキストを1つの文字列として返す。
  • File.ReadAllLines: テキストを行単位で読み込んで、文字列配列で返す。

例:

string[] lines = File.ReadAllLines("sample.txt");
foreach (var line in lines)
{
Console.WriteLine(line);
}

複数行のファイルを1行ずつ処理したい場合は、ReadAllLinesが適しています。
ファイル全体を一括で文字列として扱いたい場合は、ReadAllTextが便利です。


大きなファイルには注意

File.ReadAllTextは、すべての内容を一気にメモリ上に読み込むため、巨大なファイル(例:数百MB以上)に対して使うとメモリ不足になる可能性があります。
そのような場合は、StreamReaderを使って逐次読み込む方が安全です。

例:

using System;
using System.IO;

class Program
{
static void Main()
{
using (StreamReader reader = new StreamReader("largefile.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}

用途に応じて使い分けることが大切です。


実践的な活用:設定ファイルの読み込み

例えば、アプリケーションの設定を外部のテキストファイルで管理し、起動時に読み込むといった用途でもFile.ReadAllTextは役立ちます。

string config = File.ReadAllText("app.config");
if (config.Contains("DebugMode=true"))
{
Console.WriteLine("デバッグモードで起動します。");
}

簡易な設定ファイルを扱うなら、JSONやINIファイルを読み込むケースもあります。
JSONを扱う場合は、JsonConvert.DeserializeObjectと組み合わせて使うのもおすすめです。


まとめ

File.ReadAllTextは、C#でファイルの内容を手軽に一括読み込みできる便利なメソッドです。

  • シンプルな構文で扱いやすい
  • 文字コードの指定も可能
  • 例外処理で堅牢性を高める
  • ファイルサイズに応じた使い分けが必要

初心者から上級者まで、幅広く使われるメソッドなので、ぜひマスターしておきましょう。
特に設定ファイルの読み込みやログファイルの解析など、現場でもよく使われる場面があります。

次回は、File.ReadAllLinesStreamReaderとの使い分けについて、さらに掘り下げて解説したいと思います。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。