C# - テキストファイルを1行ずつ読み取る

テキストファイルを1行ずつ読み取るには、File.ReadLines メソッドを使用します。

ファイルを1行ずつ読み取る方法

File.ReadLines メソッド の引数に ファイル名 を指定します。
using System.Collections.Generic;
using System.IO;

IEnumerable<string> lines = File.ReadLines("ファイル名");
foreach (string line in lines)
{
    // 変数 line に 1行ずつ、ファイル内容が格納される
}

小さいファイルしか読み取らないとき

File.ReadAllLines メソッド を使用すると、戻り値が 文字列の配列(string[]) になります。 File.ReadLines より便利に思えますが一度に全てのファイル内容を読み込むため、多くのメモリーを使用します。

File.ReadAllLines メソッドの使い方

using System.IO;

string[] lines = File.ReadAllLines("ファイル名");

サンプルコード

File.ReadLines を使用して テキストファイルを読み取る
using System;
using System.Collections.Generic;
using System.IO;

try
{
    // ファイルを 1行ずつ 読み取る
    IEnumerable<string> lines = File.ReadLines(".\\test.txt");

    // 行番号の表示用
    int lineNo = 0;

    // ファイルの行数分ループ
    foreach (string line in lines)
    {
        // 行番号をカウントアップ
        lineNo += 1;

        // ファイルの内容を表示
        Console.WriteLine($"{lineNo}行目: {line}");
    }
}
catch (ArgumentNullException ex)
{
    Console.WriteLine($"ファイル名が NULL です。({ex.Message})");
}
catch (ArgumentException ex)
{
    Console.WriteLine($"ファイル名が空か、ファイル名に使用できない文字が含まれています。({ex.Message})");
}
catch (DirectoryNotFoundException ex)
{
    Console.WriteLine($"無効なファイルパスです。({ex.Message})");
}
catch (FileNotFoundException ex)
{
    Console.WriteLine($"ファイルが見つかりません。({ex.Message})");
}
catch (PathTooLongException ex)
{
    Console.WriteLine($"ファイル名が長すぎます。({ex.Message})");
}
catch (IOException ex)
{
    Console.WriteLine($"I/O エラーが発生しました。({ex.Message})");
}
catch (System.Security.SecurityException ex)
{
    Console.WriteLine($"アクセス許可がありません。({ex.Message})");
}
catch (Exception ex)
{
    Console.WriteLine($"予期せぬエラーが発生しました。({ex.Message})");
}

サンプルコードで使用した ファイルの内容 ファイルの内容

サンプルコードの実行結果 サンプルコードの実行結果

検証環境

関連ページ