Mögliches Duplikat:
So erstellen Sie einen Java-String aus dem Inhalt einer Datei
Vollständige Textdatei in einen String in Java
Ich versuche, den Inhalt einer Datei mit FileReader zu lesen. Aber ich möchte die Datei lesen, ohne eine Zeile für Zeile zu lesen. Ist es möglich, die gesamte 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();
}
Antworten:
Wenn die Datei klein ist , können Sie die gesamten Daten einmal lesen:
quelle
file.length()
möglicherweise 0 für Dateien unter zurück/proc
. In diesen Fällen gibt dieses Snippet eine leere Zeichenfolge zurück.read
Umständen nicht den gesamten Puffer füllen. In der Praxis funktioniert dies möglicherweise mit den meisten JREs, es gibt jedoch keine Garantie für die API.Java 7 einzeilige Lösung
oder
quelle
String text = Files.readString(Paths.get("file"));
ist sogar noch kürzer, vorausgesetzt, Sie möchten eine UTF-8-String-Ausgabe.file.toPath()
innenreadAllBytes
Call requires API level 26: java.nio.file.Files#readAllBytes
- Gleiches fürreadString
.Sie können versuchen, Scanner zu verwenden, wenn Sie JDK5 oder höher verwenden.
Oder Sie können auch Guave verwenden
quelle
String data = Files.toString(new File("path.txt"), Charsets.UTF_8);
. Nur ein kleiner Tippfehler. :-)Scanner
liest nur die ersten 1024 Bytes aus der Datei. Schauen Sie sich den Quellcode an. Es liest Puffer und überprüft ihn mit diesem regulären Ausdruck. Dies ist immer gültig - dann wird der gesamte Pufferinhalt zurückgegeben. Standardmäßig hat der Puffer eine Größe von 1024 Bytes.Files.readAllLines()
. Für ältere JREsFileInputStream.read()
ist dies wahrscheinlich am besten. Ich bin mir nicht sicher, ob es auf alle Plattformen portierbar ist (dh Ctl-Z wird überall erkannt), und es ist leicht zu übersehen, dass aScanner.close()
.Wenn Sie Java 5/6 verwenden, können Sie Apache Commons IO verwenden, um Dateien in Zeichenfolgen zu lesen. Die Klasse
org.apache.commons.io.FileUtils
enthält mehrere Methoden zum Lesen von Dateien.zB mit der Methode
FileUtils#readFileToString
:quelle
Seit Java 11 können Sie es noch einfacher machen:
Quelle: https://docs.oracle.com/de/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)
quelle