C#でファイル操作を行う際に、「ファイルの内容をすべて読み込んで文字列として扱いたい」と思ったことはありませんか?
そんな時に便利なのが、File.ReadAllText
メソッドです。
このメソッドは、ファイルの中身を1行ずつ読み込むことなく、まるごと文字列として一度に取得できるシンプルで強力な方法です。
本記事では、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.ReadAllText
はFileNotFoundException
をスローします。
安全なプログラムを書くためには、例外処理を行うことが重要です。
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);
}
}
}
このように、例外処理を加えることで、予期せぬエラーに強いアプリケーションが作れます。
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.ReadAllLines
やStreamReader
との使い分けについて、さらに掘り下げて解説したいと思います。