1. ホーム

[解決済み】ファイルをStringに読み込む最も簡単な方法は何ですか?重複

2022-04-03 10:10:41

質問

簡単なテキストファイルをStringに読み込もうとしています。もちろん、入力ストリームを取得してreadLine()で反復し、内容をStringに読み込むという通常の方法があります。

過去に何百回となくこの作業を行ってきましたが、どうすれば最小限のコード行数でこれを行うことができるのでしょうか?javaには、次のようなものはないのでしょうか? String fileContents = XXX.readFile(myFile/*File*/) ...むしろ、これほど単純に見えるものはないのでは?

Apache Commons IOのようなライブラリがあることは知っていますし、私でもこれを行う簡単なUtilクラスを書くことができます。しかし、私が疑問に思うのは、これは誰もが必要とする非常に頻繁な操作であり、なぜJavaはこのような単純な機能を提供しないのだろうかということです。ファイルをデフォルトまたは指定されたエンコーディングで文字列に読み込むための単一のメソッドがどこかに本当にないのでしょうか?

どうやって解決するの?

はい、これは1行でできます(ただし、堅牢な IOException を処理したいとは思わないでしょう。)

String content = new Scanner(new File("filename")).useDelimiter("\\Z").next();
System.out.println(content);

これは java.util.Scanner で入力を区切るように指示します。 \Z これは文字列アンカーの終端である。これは最終的に入力が1つの実際のトークンを持つようにし、それがファイル全体であるため、1回の next() .

があります。 コンストラクタ を受け取る。 FileString charSetName (他の多くのオーバーロードの中で)。これら二つのコンストラクタは FileNotFoundException しかし、他の Scanner メソッドはありません。 IOException は、これらのコンストラクタの先で投げることができます。

をクエリすることができます。 Scanner を使用しています。 ioException() メソッドを使用します。 IOException が発生したかどうか。また、明示的に close() その Scanner を保存しておくと、コンテンツを読んだ後に Scanner をローカル変数に格納するのが最適です。

参照

関連する質問


サードパーティライブラリオプション

完全を期すために、これらの非常に評判の良い、非常に有用なサードパーティライブラリを持っている場合、これらは本当に良いオプションです。

グアバ

com.google.common.io.Files には、多くの便利なメソッドが含まれています。ここではその中から適切なものを紹介します。

アパッチコモンズ/IO

org.apache.commons.io.IOUtils も同様の機能を提供します。

  • String toString(InputStream, String encoding)
    • 指定された文字エンコーディングで InputStream として String
  • List readLines(InputStream, String encoding)
    • ...として、(生) ListString 1行に1エントリ

関連する質問