Lesen Sie den Hinweis zur Dateikopie von Java 1.7 oder höher

Überblick

Dies ist eine Überprüfung des Kopierens von Dateien, die nur mit der Standard-API von Java 1.7 oder höher durchgeführt werden kann.

Umgebung

Referenz

Files#copy() (Java 1.7+)

Dies ist eine Methode, die die Kopiermethode der in Java 1.7 hinzugefügten Files-Klasse verwendet.

signature


public static long copy​(InputStream in, Path target, CopyOption... options) throws IOException

public static long copy​(Path source, OutputStream out) throws IOException

public static Path copy​(Path source, Path target, CopyOption... options) throws IOException

** Codebeispiel 1 **

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
Files.copy(source, target);

Wenn Sie die Kopierzieldatei überschreiben möchten, geben Sie in der Kopieroption REPLACE_EXISTING an.

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);

Wenn Sie in ein beliebiges Verzeichnis kopieren möchten. In diesem Beispiel wird "path / to / in.txt" nach "path / to / newDir / in.txt" kopiert.

example


Path source = Paths.get("path/to/in.txt");
Path targetDir = Paths.get("path/to/newDir");
Files.copy(source, targetDir.resolve(source.getFileName()));

** Codebeispiel 2 **

example


InputStream source = Files.newInputStream(Paths.get("path/to/in.txt"));
Path target = Paths.get("path/to/out.txt");
try (source) {
  Files.copy(source, target);
}

InputStream.transferTo (Java 9+)

Dies ist eine Methode, die die in Java 9 zur InputStream-Klasse hinzugefügte transferTo-Methode verwendet.

signature


public long transferTo​(OutputStream out) throws IOException

transferTo schließt den Reader / Writer-Stream nicht wie in JavaDoc (maschinelle Übersetzung) beschrieben.

Liest alle Bytes aus diesem Eingabestream und schreibt die Bytes in der angegebenen Reihenfolge in den angegebenen Ausgabestream. Bei der Rückkehr befindet sich dieser Eingabestream am Ende des Streams. Diese Methode schließt keinen Stream.

** Bekannte Unterklasse **

Der Wert in () ist die Java-Version, in der die Klasse und die Schnittstelle installiert sind.

InputStream (1.0)
 |
 +--- javax.sound.sampled.AudioInputStream (1.3)
 |
 +--- ByteArrayInputStream (1.0)
 |
 +--- FileInputStream (1.0)
 |
 +--- FilterInputStream (1.0)
 |     |
 |     +--- BufferedInputStream (1.0)
 |     +--- java.util.zip.CheckedInputStream (1.1)
 |     +--- javax.crypto.CipherInputStream (1.4)
 |     +--- DataInputStream (1.0)
 |     +--- java.util.zip.DeflaterInputStream (1.6)
 |     +--- java.security.DigestInputStream (1.2)
 |     +--- java.util.zip.InflaterInputStream (1.1)
 |     |    @Deprecated
 |     +--- LineNumberInputStream (1.0)
 |     +--- javax.swing.ProgressMonitorInputStream (1.2)
 |     +--- PushbackInputStream (1.0)
 |
 +--- org.omg.CORBA.portable.InputStream
 |
 +--- ObjectInputStream (1.1)
 |
 +--- PipedInputStream (1.0)
 |
 +--- SequenceInputStream (1.0)
 |
 |    @Deprecated
 +--- StringBufferInputStream (1.0)

FileInputStream.transferTo

** Codebeispiel 1 **

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
try (InputStream in = new FileInputStream(source.toFile());
     OutputStream out = new FileOutputStream(target.toFile())) {
  in.transferTo(out);
}

** Codebeispiel 1 (Java 9+) **

Ab Java 9 können Ressourcen außerhalb der try-Klausel deklariert werden.

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
InputStream in = new FileInputStream(source.toFile());
OutputStream out = new FileOutputStream(target.toFile());
try (in; out) {
  in.transferTo(out);
}

** Codebeispiel 2 **

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
try (InputStream in = Files.newInputStream(source);
     OutputStream out = Files.newOutputStream(target)) {
    in.transferTo(out);
}

** Codebeispiel 2 (Java 9+) **

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
InputStream in = Files.newInputStream(source);
OutputStream out = Files.newOutputStream(target);
try (in; out) {
    in.transferTo(out);
}

Reader.transferTo (Java 10+)

Dies ist eine Methode zur Verwendung der transferTo-Methode, die in Java 10 zur Reader-Klasse hinzugefügt wurde.

signature


public long transferTo​(Writer out) throws IOException

transferTo schließt den Reader / Writer-Stream nicht wie in JavaDoc (maschinelle Übersetzung) beschrieben.

Liest alle Zeichen dieses Lesegeräts und schreibt sie in der Reihenfolge, in der sie gelesen wurden, an den angegebenen Schreiber. Wenn Sie zurückkommen, befindet sich dieser Anführer am Ende des Streams. Diese Methode schließt weder den Leser noch den Schreiber.

** Bekannte Unterklasse **

Der Wert in () ist die Java-Version, in der die Klasse und die Schnittstelle installiert sind.

Reader
 |
 +--- BufferedReader (1.1)
 |     |
 |     +--- LineNumberReader (1.1)
 |
 +--- CharArrayReader (1.1)
 |
 +--- FilterReader (1.1)
 |     |
 |     +--- PushbackReader (1.1)
 |
 +--- InputStreamReader (1.1)
 |     |
 |     +--- FileReader (1.1)
 |
 +--- PipedReader (1.1)
 |
 +--- StringReader (1.1)
 |
 +--- jdk.nashorn.api.scripting.URLReader (1.8u40)

FileReader.transferTo

** Codebeispiel **

example


Path source = Paths.get("path/to/in.txt");
Path target = Paths.get("path/to/out.txt");
Reader in = new FileReader(source.toFile());
Writer out = new FileWriter(target.toFile());
try (in; out) {
  in.transferTo(out);
}

BufferedReader.transferTo

Es wird empfohlen, InputStreamReader und FileReader mit BufferedReader zu verpacken.

Wenn eine Leseanforderung an den Reader gesendet wird, wird im Allgemeinen eine Leseanforderung an den entsprechenden zugrunde liegenden Zeichenstrom oder Bytestrom ausgegeben. Aus diesem Grund wird empfohlen, einen BufferedReader um den Reader zu wickeln, was für read () -Operationen wie FileReader und InputStreamReader nicht effizient ist.

Ebenso wird empfohlen, OutputStreamWriter und FileWriter mit BufferedWriter zu verpacken.

Im Allgemeinen sendet der Writer seine Ausgabe sofort an das zugrunde liegende Zeichen oder den Bytestream. Es ist ineffizient, die write () -Operation direkt von einem Writer wie FileWriter oder OutputStreamWriter aus aufzurufen, es sei denn, Sie benötigen eine sofortige Ausgabe. Es wird daher empfohlen, sie in einen BufferedWriter zu packen.

** Codebeispiel **

Sie können das FileReader-Codebeispiel wie folgt umschreiben.

example


BufferedReader in = new BufferedReader(new FileReader(source.toFile()));
BufferedWriter out = new BufferedWriter(new FileWriter(target.toFile()));
try (in; out) {
  in.transferTo(out);
}

StringReader.transferTo

** Codebeispiel **

example


String source = "Amenbo\n rot\n Aiueo";
Path target = Paths.get("path/to/out.txt");
Reader in = new StringReader(source);
Writer out = new FileWriter(target.toFile());
try (in; out) {
  in.transferTo(out);
}

URLReader.transferTo

Die URLReader-Klasse wurde in Java 1.8u40 hinzugefügt.

** In Java 11 veraltet ** (JEP 335: Veraltet die Nashorn JavaScript Engine).

** Codebeispiel **

example


URI source = URI.create("http://www.oracle.com/technetwork/java/index.html");
Path target = Paths.get("path/to/out.txt");
Reader in = new URLReader(source.toURL(), StandardCharsets.UTF_8);
Writer out = new FileWriter(target.toFile());
try (in; out) {
  in.transferTo(out);
}

(WIP) Files#writeString (Java 11+)

Dies ist eine Methode, die die writeString-Methode verwendet, die in Java 11 zur Files-Klasse hinzugefügt wurde.

public static Path writeString​(Path path, CharSequence csq, OpenOption... options) throws IOException

public static Path writeString​(Path path, CharSequence csq, Charset cs, OpenOption... options) throws IOException

Recommended Posts

Lesen Sie den Hinweis zur Dateikopie von Java 1.7 oder höher
Überprüfungshinweise zu Java NIO 2
Java Version 8 und neuere Funktionen
Überprüfungshinweise zum Java Collections Framework
Java während und für Anweisungen
AWS SDK für Java 1.11.x und 2.x.
[Java] Grundtypen und Anweisungshinweise
Java für Anfänger, Ausdrücke und Operatoren 1
Java für Anfänger, Ausdrücke und Operatoren 2
Hinweise zum Java-Pfad und -Paket
Klassen und Instanzen Java für Anfänger
Java-Überprüfung
[Für Anfänger] Unterschied zwischen Java und Kotlin
Java Note
Hinweise zum Lesen und Generieren von XLSX-Dateien aus Java mit Apache POI
[Java] Proxy zum Protokollieren von SQL und SQL-Ergebnissen
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
[Java 7 oder höher] Verhindert das Auslassen des temporären Löschens von Dateien
Beispiel für eine Gegenmaßnahme gegen NullPointerException (optional) für Java8 oder höher
Fragen Sie n Werktage später bei JAVA nach
Studiere 3 Wochen und bestehe Java Bronze
Laden Sie Notizen in Java in den Azure-Speicher hoch und laden Sie sie herunter
Hinweise zur Einführung für erfahrene JavaScript-Lernende von Java
Laden Sie Notizen in Java auf S3 hoch und laden Sie sie herunter
[Java] Konvertieren und Importieren von Dateiwerten mit OpenCSV
[Review] Lesen und Schreiben von Dateien mit Java (JDK6)
Für JAVA-Lernen (2018-03-16-01)
Java Generics (Hinweise)
Überprüfung und Implementierung der CSV-Bibliothek zum Laden großer Datenmengen in MySQL (Java)
[Java] Array-Hinweis
Enum Review Memo
2017 IDE für Java
Erstellung von Java-Dateien
Java und JavaScript
[Java] Studiennotizen
XXE und Java
Hinweise zur Java-Serialisierung
Java IO Bewertung
Java für Anweisung
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [0. Basisdatei]
<java> Zip-Datei lesen und direkt in String konvertieren
Beispielprogramm für die Eingabe / Ausgabe von Java-Dateien (jdk1.8 oder höher)
Beispiel für eine OAuth 2.0-Authentifizierung und Zugriffstokenerfassung (Java)
VSCode Java Debugger für Java Build fehlgeschlagen Ursachen und Gegenmaßnahmen
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Basisdatei]
Zum ersten Mal lernen Java # 3 Ausdrücke und Operatoren
[Java] Über Objects.equals () und Überprüfung des String-Vergleichs (== und gleich)
Dies und das zum Bearbeiten von ini in Java. : inieditor-java
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)
Bereiten Sie die Umgebung für Java11 und JavaFx mit Ubuntu 18.4 vor
Zusammenfassung der Methoden zum Lesen von Dateien für jedes Java-Dateiformat