JDK1.7 führt das neue Paket für Dateioperation Java.nio.file vor. Es gibt eine Dateienklasse, die viele nützliche Methoden zum Betrieb 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 Methode der Dateien.readallBytes (PATH) verwenden, um die gesamte Datei in den Speicher zu lesen. Diese Methode gibt ein Byte -Array zurück und kann das Ergebnis auch an den String -Konstruktor übergeben, um die String -Ausgabe zu erstellen. Diese Methode stellt sicher, dass die Ressource geschlossen wird, unabhängig davon, ob es eine IO -Ausnahme oder eine andere ungeprüfte Ausnahme gibt, wenn alle Byte -Inhalte der Datei gelesen werden. 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.
Der Quellcode von ReadAllBytes (Path) Methode:
<span style = "Schriftgröße: 32px;"> </span> <span style = "Schriftgröße: 18px;">/*** liest alle Bytes aus einer Datei. Die Methode stellt sicher, dass die Datei * geschlossen ist, wenn alle Bytes gelesen wurden oder ein E/A -Fehler oder eine andere Laufzeit * -Ausnahme * ausgeworfen wird. * Beachten Sie, dass diese Methode für einfache Fälle bestimmt ist, in denen es * bequem ist, alle Bytes in ein Byte -Array zu lesen. Es ist nicht zum Lesen in großen Dateien gedacht. * * @param Pfad * Der Pfad zur Datei * * @return ein Byte -Array, das die aus der Datei gelesenen Bytes enthält * @throws SecurityException * Im Fall des Standardanbieters und eines Sicherheitsmanagers wird die Methode {@link SecurityManager#CheckRead (String) checkread} * aufgerufen, um den Lesezugriff auf die Datei zu überprüfen. */</span> <span style = "Schriftgröße: 18px;"> public static byte [] readAllBytes (Pfadweg) löst ioException {try (suchableBytechannel sbc = file) aus. sbc.size (); if (size> (lang) max_buffer_size) Neue OutofMemoryError ("Erforderliche Arraygröße zu groß"); return read (in, (int) Größe); }} </span>Es wird nur eine Zeile der Datei gelesen
Paketeintrag; importieren java.io.ioException; importieren java.nio.file.files; Import Java.nio.file.Paths; public class bufferandchannel {public static void main (string [] args) {try {System.out.println (neue String (files.readallBytes (paths.get ("c: //filechannelimpl.java")))); } catch (ioException e) {e.printstacktrace (); }}}Der Quellcode der Readalllines -Methode
öffentliche statische Liste <string> readAllLines (Pfad Pfad, charset cs) löst IOException {try (bufferedReader reader = newbuffenedReader (Pfad, CS)) {list <string> result = new ArrayList <> () aus; für (;;) {String line = reader.readline (); if (line == null) brechen; result.add (Linie); } Rückgabeergebnis; }} Paketeintrag; importieren java.util.list; importieren java.io.ioException; import Java.nio.charset.StandardCharets; importieren java.nio.file.files; Import Java.nio.file.Paths; public class bufferandchannel {public static void main (String [] args) {// Wenn es sich um eine Textdatei handelt, können Sie sie auch so lesen. Rufen Sie die ReadallLines-Methode an, versuchen Sie {<span style = "White-Space: PRE"> </span> // Der zweite Parameter kann nach jdk1.8 weggelassen werden. Die Standardeinstellung ist die UTF-8-Codierungsliste <string> line = Dateien.readallLines (paths.get ("c: //filechannelimpl.java"), Standardcharets.utf_8); StringBuilder sb = new StringBuilder (); für (String -Zeile: Zeilen) {sb.append (Zeile+"/n"); ///r/n newline} String von file = sb.toString (); System.out.println (from file); } catch (ioException e) {e.printstacktrace (); }}}So verwenden Sie Java8 -Streams:
Schauen Sie sich zunächst die Quellcode -Implementierung an
public static stream <string> Linien (Pfad Pfad) löst IOException {return Lines (Pfad, Standardcharets.utf_8) aus; } Paketeintrag; importieren java.io.ioException; importieren java.nio.file.files; Import Java.nio.file.Paths; öffentliche Klasse BufferandChannel {public static void main (String [] args) {// java8 fügt Linienmethoden hinzu, die versuchen {// java8 verwendet Streaming, um Dateien zu lesen, wodurch es effizientere Dateien macht. sans-serif; ">" c: //filechannelimpl.java "</span>)). foreach (System.out :: println); } catch (ioException e) {e.printstacktrace (); }}}Es ist nur eine Zeile erforderlich, um eine Datei zu lesen und eine Datei zu schreiben.
Paketeintrag; Import Java.util.Arrays; importieren java.util.list; importieren java.io.ioException; importieren java.nio.file.files; Import Java.nio.file.Paths; Import Java.nio.file.Standardopenoption; public class bufferandchannel {public static void main (String [] args) {// java8 fügt die Linienmethode String filepath = "c: //filechannelimpl.java"; Versuchen Sie {// Java8 liest Dateien in einem Stream, der effizienter ist/*files.lines (paths.get (filepath)). foreach ((Zeile)-> {try {files.write (paths.get ("// 1.java"), line.getBytes (), Standardopenoption.Antion.Antion. e.PrintStackTrace (); * / /* Dateien.readallLines (Pfadpfad) Methode gibt den Wert des List <string> -Typs zurück, der für Dateien ausgelegt ist. erweitert charsequence> type * * files.write (Pfad, iterable <? Erweitert charsequence> lines, openOption ... optionen) */ list <string> stringstream = files.readalllines (paths.get (filepath)); // Da Dateien.lines (Pfad) Stream <string> zurückgibt, können Sie die folgende Methode verwenden, um die Liste <string> // Liste <string> Stringstream2 = arrays.aslist ((String []) Dateien.lines (paths.get (Filepath)). ToArray ()) zu werden; // Standardopenoption ist eine Aufzählungsklasse. Wenn die Datei derzeit nicht vorhanden ist, kann der dritte Parameter als Standardopenoption ausgewählt werden. } catch (ioException e) {e.printstacktrace (); }}}Der obige Artikel jdk1.7 java.nio.file.files erfordert nur eine Codezeile, um die obige Datei zu realisieren. Dies ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.