ファイルを1行ずつ読み取る(StreamReader + ReadLine)
サイズの大きいファイルを読み込む場合は StreamReaderクラス と ReadLineメソッド を使用し、1行ごとに読み込みます。ReadLine()メソッドは改行コードを取り除いた結果を返します。using System.IO;
using System.Text;
// ファイルをオープン(エンコード=UTF-8)
using (StreamReader sr = new StreamReader("./utf8.txt", Encoding.UTF8))
{
// ファイル終端までループ
while (sr.Peek() > -1)
{
// 一行読み込む
string lineText = sr.ReadLine();
// 結果を表示
System.Console.Write(lineText);
}
}
ファイルを1行ずつ読み取る(File.ReadLines)
サイズの小さなファイルを読み取るときは File.ReadLines() メソッドを使用します。ファイルをすべて読み取ってから結果を返すため、大きなファイルの場合は時間がかかったり、メモリーの消費量が大きくなります。結果から改行コードは取り除かれます。using System.Collections.Generic;
using System.IO;
using System.Text;
// ファイルを読み込む
IEnumerable<string> lines = File.ReadLines("./utf8.txt", Encoding.UTF8);
// 最終行までループ
foreach (string line in lines)
{
// 結果を表示
System.Console.Write(line);
}
改行で分割せずにファイルを読み取る(File.ReadAllText)
ファイルの内容を丸ごと読み取るには File.ReadAllText() メソッドを使用します。結果は改行コードを含んだ文字列で返されます。using System.IO;
using System.Text;
// 一度に読み込み
string text = File.ReadAllText("./utf8.txt", Encoding.UTF8);
// 結果を表示
System.Console.Write(text);
改行で分割せずにファイルを読み取る(StreamReader + ReadToEnd)
StreamReaderクラスとReadToEnd()メソッドを使用しても File.ReadAllText()メソッド と同じ結果を得られます。返す値は改行コードを含んだ文字列です。using System.IO;
using System.Text;
// ファイルをオープン(エンコード=UTF-8)
using (StreamReader sr = new StreamReader("./utf8.txt", Encoding.UTF8))
{
// 一度に読み込み
string text = sr.ReadToEnd();
// 結果を表示
System.Console.Write(text);
}
Shift-Jis ファイルの読み込み
ターゲットフレームワークが「.Net Core 1.0 ~ .Net Core 3.1」と「.NET 5 ~ 」の場合、エンコード(文字コード)に Shift_JIS を指定すると例外が発生します。 解決するには エンコーディングプロバイダー登録 を行います。詳細は次の記事を参照してください。
Shift-Jis ファイルを読み込むサンプルコードusing System.IO;
using System.Text;
// コードページ エンコーディング プロバイダーを登録
// (※.NET Core と .NET5 ~ の場合に必要。.NET Frameworkの場合は不要)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// ファイルをオープン(エンコード=Shift-JIS)
using (StreamReader sr = new StreamReader("./sjis.txt", Encoding.GetEncoding("Shift_JIS")))
{
// 一度に読み込み
string text = sr.ReadToEnd();
// 結果を表示
System.Console.Write(text);
}
サンプルコードの実行結果
検証環境
- .NET 5.0
- Microsoft Visual Studio Professional 2019 Version 16.11.16
- Microsoft Windows 10 Enterprise Version 22H2 OS Build 19045.2251 Experience: Windows Feature Experience Pack 120.2212.4180.0