StreamReaderを使用したファイルの読み取り
メニューを表示するにはスワイプしてください
C#プログラミング言語を使用してファイルを開き、読み取ることができます。
ファイルを読み取るには、新しいStreamReaderオブジェクトを作成します。StreamReaderオブジェクトはファイルのパスを受け取ります。
「オブジェクト」という用語は後のセクションでより明確になりますが、理解のために説明すると、オブジェクトとはデータ型のインスタンスのことです。StreamReaderはintやfloatと同様にデータ型です。そのため、値1、2.5f、"Hello World"は、それぞれint型、float型、string型の「オブジェクト」として技術的に呼ぶことができます。
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
ここで fileVarName は StreamReader オブジェクトを格納する変数名を表し、fullPath はファイルのフルパスを文字列として指定します。
例えば、デスクトップ上の "text.txt" ファイル(パスは C:/Users/Admin/Desktop/text.txt)を開く場合:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
暗黙的な宣言を使用して、構文を少し短くすることも可能です: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
text.txt ファイルには次の内容が含まれていると仮定する:
text.txt
12345This is some example text
StreamReader オブジェクトには、ファイルから1行を読み取り返す ReadLine メソッドがある:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
出力:
This
ReadLine メソッドは自動的にカーソルを次の行に移動するため、再度呼び出すと次の行があればそれを読み取り、なければ単に null(何もない)を返します。
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
出力:
This
is
some
example
text
ファイルからすべての行を読み込むには、次の行が while かどうかを条件として null ループを使用できます。以下はその簡単な方法です。
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
出力:
This
is
some
example
text
上記のコードは、ちょっとした工夫でさらに簡潔にできます。そのために、代入文について見てみましょう。代入文には戻り値もあり、それは代入される値です。例を使って説明します。
index.cs
12int a; Console.WriteLine(a = 7);
出力:
7
7 という文が a = 7 を返し、それが 7 に代入される値であるため、a が出力されます。
この仕組みを利用して、1つの文で複数の変数に同じ値を代入することも可能です。
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
出力:
9
9
9
この情報を活用し、不要なコードを削除してファイル読み込みコードをより簡潔にすることが可能。
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
条件内では、まず代入文 line = textFile.ReadLine() を使用して line 変数を自動的に更新し、その後、文の戻り値から null かどうかを確認します。
ファイルを読み込んだ後は、Close メソッドを使って必ずファイルを閉じる必要があります。そうしないと、メモリリークが発生したり、プログラムが実行されている間ファイルがロックされて他の場所からアクセスできなくなる可能性があります。
最終的なコードは次のようになります。
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください