C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でファイルの内容を一度に文字列として読み込む方法


C#でファイルの中身をまとめて文字列として取得したい場合は、ReadToEnd() メソッドを使用します。このメソッドは、ストリームの現在位置から末尾までのすべてのテキストを一括で読み取るため、小規模なテキストファイルを扱う際に非常に便利です。

StreamReader クラスと組み合わせて、次のように記述します。

using (StreamReader sr = new StreamReader("new.txt")){
    string res = sr.ReadToEnd();
    Console.WriteLine(res);
}

using ステートメントを使うことで、処理が終わった後に StreamReader が自動的に解放され、リソースリークを防ぐことができます。続いて、完全なサンプルコードを見てみましょう。

サンプルコード

using System.IO;
using System;

public class Demo {
    public static void Main() {
        // ファイルを作成してテキストを書き込む
        using (StreamWriter sw = new StreamWriter("new.txt")) {
            sw.WriteLine("One");
            sw.WriteLine("Two");
        }
        // ReadToEnd() でファイル全体を一括読み込みする
        using (StreamReader sr = new StreamReader("new.txt")) {
            string res = sr.ReadToEnd();
            Console.WriteLine(res);
        }
    }
}

コードの解説

このプログラムは、まず StreamWriter を使って「new.txt」というファイルを作成し、「One」「Two」という2行のテキストを書き込みます。

その後、StreamReader クラスと ReadToEnd() メソッドを組み合わせることで、ファイルの内容全体を1つの文字列変数 res に読み込み、コンソールに出力しています。

ポイント

  • ReadToEnd() は、呼び出した時点のストリーム位置から末尾までを読み取ります。ファイルを最初から読みたい場合は、開いた直後に呼び出してください。
  • 巨大なファイルを一度に読み込むとメモリを大量に消費するため、その場合は ReadLine() などで1行ずつ処理する方が適切です。
  • 文字エンコーディングを指定したい場合は、new StreamReader(path, Encoding.UTF8) のようにコンストラクタで指定できます。

実行結果

上記のプログラムを実行すると、次のようにファイルの内容が出力されます。

One
Two

  1. Pythonでファイル全体を読み込んで文字列として返す方法

    Pythonでは、ファイルオブジェクト(Fileクラス)が持つ read() メソッドを使うことで、ファイル全体を簡単に読み込むことができます。特別なバッファ処理を自分で実装する必要はありません。open() 関数でファイルを開き、そのファイルハンドルに対して read() を呼び出すだけで、ファイルの内容全体が1つの文字列として読み込まれ、返されます。基本的な使い方以下は、テキストファイルの内容をすべて読み込み、文字列として取得するシンプルな例です。with open(my_file.txt, r) as f: file_content = f.read() # ファイル全体を f

  2. JavaでJSONファイルを文字列(String)として読み込む方法

    この記事では、JavaでJSONファイルをString型の変数として読み込む方法を解説します。特にAPIテストの際に、エンドポイントへJSONペイロードをPOSTしたいケースなどで非常に便利なテクニックです。 JSONペイロードをあらかじめファイルとして保存しておき、そのファイルを文字列として読み込めば、POSTリクエストのボディとしてそのまま利用できます。 JSONファイルを文字列として読み込む基本手法 まず、以下の場所にJSONファイルが配置されているものと仮定します。 src/test/resources/myFile.json { name:David, age:30, h