[解決済み】ファイルをStringに読み込む最も簡単な方法は何ですか?重複
質問
簡単なテキストファイルを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()
.
があります。
コンストラクタ
を受け取る。
File
と
String charSetName
(他の多くのオーバーロードの中で)。これら二つのコンストラクタは
FileNotFoundException
しかし、他の
Scanner
メソッドはありません。
IOException
は、これらのコンストラクタの先で投げることができます。
をクエリすることができます。
Scanner
を使用しています。
ioException()
メソッドを使用します。
IOException
が発生したかどうか。また、明示的に
close()
その
Scanner
を保存しておくと、コンテンツを読んだ後に
Scanner
をローカル変数に格納するのが最適です。
参照
関連する質問
- java.util.Scannerを使用した入力の検証 - には、より典型的な使用例が多数あります。
サードパーティライブラリオプション
完全を期すために、これらの非常に評判の良い、非常に有用なサードパーティライブラリを持っている場合、これらは本当に良いオプションです。
グアバ
com.google.common.io.Files
には、多くの便利なメソッドが含まれています。ここではその中から適切なものを紹介します。
-
String toString(File, Charset)
-
与えられた文字セットを使って、ファイルからすべての文字を読み込んで
String
-
与えられた文字セットを使って、ファイルからすべての文字を読み込んで
-
List<String> readLines(File, Charset)
-
... ファイルからすべての行を読み込んで
List<String>
1行に1エントリ
-
... ファイルからすべての行を読み込んで
アパッチコモンズ/IO
org.apache.commons.io.IOUtils
も同様の機能を提供します。
-
String toString(InputStream, String encoding)
-
指定された文字エンコーディングで
InputStream
としてString
-
指定された文字エンコーディングで
-
List readLines(InputStream, String encoding)
-
...として、(生)
List
のString
1行に1エントリ
-
...として、(生)
関連する質問
関連
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] Javaでdoubleをfloatに変換する
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] ファイルに行を書き込む正しい方法?
-
[解決済み] ファイルが使用中であるかどうかを確認する方法はありますか?
-
[解決済み】文字列をテキストファイルに出力する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] Javaでプレーンテキストファイルを読み込む
-
[解決済み] Javaでファイルをbyte[]に変換する
-
[解決済み] Javaユニットテストにテキストファイルのリソースを読み込むには?