JDK7 führt eine neue Dateibetriebsklasse java.nio.file.file ein, die viele nützliche Methoden zum Manipulieren von Dateien enthält, z. B. Überprüfung, ob es sich bei der Datei um eine versteckte Datei handelt, oder zu überprüfen, ob es sich bei der Datei um eine schreibgeschützte Datei handelt. Entwickler können auch die Dateien verwenden. Diese Methode stellt sicher, dass wenn alle Byte -Inhalte der Datei gelesen werden, die Dateiattribute geschlossen sind, andernfalls werden eine IO -Ausnahme oder andere ungeprüfte Ausnahmen stattfinden. Dies bedeutet, dass nach dem Lesen der Datei in den letzten Blockinhalt die Datei nicht geschlossen werden muss.
Beachten Sie, dass diese Methode nicht zum Lesen großer Dateien geeignet ist, da möglicherweise nicht genügend Speicherplatz vorhanden ist. Entwickler sollten auch die Zeichencodierung der Datei angeben, um Ausnahmen oder Parsenfehler zu vermeiden.
Wenn Sie die Datei als Zeichenfolge lesen möchten, können Sie auch die Methode ReadAllLines (Pfad, Charset CS) verwenden, die der vorherigen Methode ähnlich ist, und nach dem Lesen der Datei müssen die Datei nicht geschlossen werden. Aber es gibt nicht ein Byte -Array zurück, sondern eine Reihe von Saiten. Darüber hinaus überschreibt Java8 diese Methode, ohne einen Zeichensatz anzugeben, und unter Verwendung der UTF-8-Codierung für die String-Konvertierung direkt.
Wenn Sie die Datei als Zeichenfolgenzeile für Zeile lesen möchten, können Sie die Methode von Dateien.lines () verwenden, die den String-Stream aus der Lesedatei zurückgibt und die Bytes mithilfe der UTF-8-Codierung in Zeichen umwandelt. Mit der Methode foreAch () können Sie nur eine Zeile Java -Code verwenden, um den gesamten Inhalt der Datei an die Konsole auszugeben, z. B. den dritten Code -Snippet unten.
Die Codekopie lautet wie folgt:
importieren java.io.ioException;
import Java.nio.charset.StandardCharets;
importieren java.nio.file.files;
Import Java.nio.file.Paths;
importieren java.util.list;
öffentliche Klasse fileReadingtest {
public static void main (String [] args) löst ioException {aus
// Java 7 Beispiele
// Dateien.readallBytes liest die Datei in der UTF-8-Codierung standardmäßig.
System.out.println (neue String (Dateien.readallBytes (paths.get ("d: //jd.txt")));
// 8 Beispiele für Java
Liste <String> line = Dateien.readallLines (paths.get ("d: //jd.txt"), StandardCharets.utf_8);
StringBuilder sb = new StringBuilder ();
für (String -Zeile: Zeilen) {
sb.Append (Linie);
}
String fromFile = sb.toString ();
System.out.println (from File);
}
}
Wenn Sie JDK7, aber JDK8 nicht verwenden, kann eine Codezeile das Lesen der Datei vervollständigen.
Die Codekopie lautet wie folgt:
statische Java.lang.System.out importieren;
statische java.nio.file.files.readallbytes importieren;
statische java.nio.file.paths.get;
importieren java.io.ioException;
public class FileIntoString {
public static void main (String [] args) löst ioException {aus
// Eine Codezeile kann zum Lesen der Datei verwendet werden. Die Standardeinstellung ist die UTF-8-Codierung
out.println (neue String (readAllBytes (get ("d: /jd.txt")));
}
}
Wenn Sie JDK8 verwenden, können Sie auch die Streaming -API zum Lesen und Schreiben von Dateien verwenden, damit der Code prägnanter und effizienter ist.
Im folgenden Beispiel gibt die Lines () -Methode einen String-Stream zurück, und die String verwendet die UTF-8-Codierung. wie folgt:
Die Codekopie lautet wie folgt:
importieren java.io.ioException;
import Java.nio.charset.StandardCharets;
importieren java.nio.file.files;
Import Java.nio.file.Paths;
öffentliche Klasse Java8Filereader {
public static void main (String [] args) löst ioException {aus
// Java 8 verwendet Streaming, um Dateien zu lesen, was effizienter ist
Dateien.lines (paths.get ("d: //jd.txt"), StandardCharets.utf_8) .foreach (System.out :: println);
}
}
Ein paar Punkte, die im obigen Beispiel zu beachten sind:
1) Die Datei kann groß sein und den Speicherplatz überschreiten.
2) Um das Protokoll auszugeben, zeichnen Sie auf, warum die Datei nicht gelesen werden kann oder Fehler beim Lesen der Datei auftreten.
3) Beim Konvertieren von Bytes in Zeichen sollte eine Zeichencodierung angegeben werden.
4) mit der Situation umzugehen, in der die Datei nicht existiert.
Beachten Sie auch, dass, wenn der Code der Lesedatei eine ANSI -Codierung ist, das obige Beispiel über eine java.nio.charset.malFormedInputException: Eingabelänge = 1 Fehler beim Lesen des Dateiinhalts meldet.