Frage Lesen Sie die komplette Datei ohne Schleife in Java [duplizieren]


Mögliche Duplikate:
So erstellen Sie eine Java-Zeichenfolge aus dem Inhalt einer Datei
Ganze Textdatei zu einem String in Java 

Ich versuche den Inhalt einer Datei mit FileReader zu lesen. Aber ich möchte die Datei lesen, ohne Zeile für Zeile zu lesen. Ist es möglich, die ganze Datei ohne Schleife zu lesen? Ich verwende den folgenden Code

 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();
 }

74
2018-01-05 07:26


Ursprung


Antworten:


Wenn die Datei ist klein, Sie können die gesamten Daten einmal lesen:

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");

106
2018-01-05 07:40



Java 7 Ein-Zeilen-Lösung

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

oder

 String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);

141
2018-01-05 07:36



Wenn Sie Java 5/6 verwenden, können Sie verwenden Apache Commons IO zum Lesen der Datei in eine Zeichenfolge. Die Klasse org.apache.commons.io.FileUtils contais mehrere Methode für das Lesen von Dateien.

z.B. Verwenden der Methode FileUtils#readFileToString:

File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);

28
2018-01-05 07:38



Sie können versuchen, zu verwenden Scanner wenn Sie JDK5 oder höher verwenden.

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

Oder du kannst es auch benutzen Guave

String data = Files.toString(new File("path.txt"), Charsets.UTF8);

26
2018-01-05 07:30