122

重複の可能性:
ファイルの内容からJava文字列
全体をJavaの文字列に作成する方法

FileReaderを使用してファイルの内容を読み取ろうとしています。しかし、私は行ごとに読まずにファイルを読みたいです。ループなしでファイル全体を読み取ることは可能ですか?私は次のコードを使用しています

 try
 {
     File ff=new File("abc.txt");
     FileReader fr=new FileReader(ff);

     String s;
     while(br.read()!=-1)
     {
          s=br.readLine();
     }
 }

 catch(Exception ex)
 {
     ex.printStackTrace();
 }
4

5 に答える 5

199

Java71行ソリューション

List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);

また

 String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);
于 2013-01-05T07:36:06.710 に答える
141

ファイルが小さい場合は、データ全体を1回読み取ることができます。

File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();

String str = new String(data, "UTF-8");
于 2013-01-05T07:40:03.070 に答える
36

JDK5以降を使用している場合は、スキャナーを使用してみてください。

Scanner scan = new Scanner(file);  
scan.useDelimiter("\\Z");  
String content = scan.next(); 

または、Guavaを使用することもできます

String data = Files.toString(new File("path.txt"), Charsets.UTF8);
于 2013-01-05T07:30:55.193 に答える
34

Java 5/6を使用している場合は、ファイルから文字列への読み取りにApacheCommonsIOを使用できます。このクラスorg.apache.commons.io.FileUtilsには、ファイルを読み取るためのいくつかのメソッドが含まれています。

例:メソッドを使用するFileUtils#readFileToString

File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);
于 2013-01-05T07:38:32.567 に答える
12

Java 11以降、さらに簡単に実行できます。

import java.nio.file.Files;

Files.readString(Path path);
Files.readString​(Path path, Charset cs)

ソース:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)

于 2019-07-07T08:02:44.023 に答える