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

C#StreamReaderを使ったテキストファイルの読み込みサンプルです。

1行づつ読み込む

using System.IO;

using (StreamReader reader = new StreamReader(@"input.txt")) {
    string line;
    while ((line = reader.ReadLine()) != null) {
        Console.WriteLine(line);
    }
}
空白行が無いことが保証される場合
while (!String.IsNullOrEmpty(line = reader.ReadLine())) {
といった記述も可能。

一度に全て読み込む

using System.IO;

using (StreamReader reader = new StreamReader(@"input.txt")) {
    string text = reader.ReadToEnd();
    Console.Write(text);
}

指定したバイト数だけ読み込む

下記サンプルは3バイトづつ読み込みます。
Readの第2引数は第1引数の配列に対する格納先開始位置(インデックス)です。

using System.IO;

using (StreamReader reader = new StreamReader(@"input.txt")) {
    char[] buffer = new char[3];
    int length;
    while ((length = reader.Read(buffer, 0, buffer.Length)) != 0) {
        Console.WriteLine(buffer);
        Array.Clear(buffer, 0, buffer.Length);
    }
}

CSVファイルの読み込み

CSVファイルを読み込むサンプルです。

private List<string[]> readCsv(string path) {
    List<string[]> result = new List<string[]>();

    using (StreamReader reader = new StreamReader(path)) {
        string line;
        while ((line = reader.ReadLine()) != null) {
            string[] columns = line.Split(',');
            result.Add(columns);
        }
    }

    return result;
}

呼び出しサンプル

List<string[]> table = readCsv(@"sample.csv");

for (int rowIndex = 0; rowIndex < table.Count; rowIndex++) {
    string rowString = String.Empty;
    string[] columns = table[rowIndex];
    for (int columnIndex = 0; columnIndex < columns.Length; columnIndex++) {
        rowString += "[" + columns[columnIndex] + "]";
    }
    Console.WriteLine(rowString);
}

sample.csv

00001.jpg,1,001,いち
00002.jpg,2,002,に
00003.jpg,3,003,さん
00004.jpg,4,004,よん
00005.jpg,5,005,ご
00006.jpg,6,006,ろく
00007.jpg,7,007,なな
00008.jpg,8,008,はち
00009.jpg,9,009,きゅう
00010.jpg,10,010,じゅう

出力結果

[00001.jpg][1][001][いち]
[00002.jpg][2][002][に]
[00003.jpg][3][003][さん]
[00004.jpg][4][004][よん]
[00005.jpg][5][005][ご]
[00006.jpg][6][006][ろく]
[00007.jpg][7][007][なな]
[00008.jpg][8][008][はち]
[00009.jpg][9][009][きゅう]
[00010.jpg][10][010][じゅう]
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です