Informationen zur Dateikopierverarbeitung in Java

Fazit

Wenn Sie wirklich Ihre eigenen implementieren möchten

Ab 2017 sollte es nicht notwendig sein, es unabhängig zu implementieren, aber aus irgendeinem Grund ist es ein Fall, es unabhängig zu implementieren. Wenn Sie im Web suchen, finden Sie Code ähnlich dem folgenden.

Probe 1



public static void copyFile(File sf, File df) {
		FileChannel sc = null, dc = null;
		try {
			sc = new FileInputStream(sf).getChannel();
			dc = new FileOutputStream(df).getChannel();
			dc.transferFrom(sc, 0, sc.size());
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (dc != null) try { dc.close(); } catch (IOException e) {}
			if (sc != null) try { sc.close(); } catch (IOException e) {}
		}
	}

Diese Methode funktioniert grundsätzlich einwandfrei, hängt jedoch vom statischen Syntaxanalysetool ab.

	sc = new FileInputStream(sf).getChannel();

Wo ich diesen FileChannel in der Methodenkette bekomme, werde ich gewarnt, dass __ "FileInputStream möglicherweise nicht geschlossen wird" __ (dasselbe gilt für FileOutputStream)

Glücklicherweise heißt es in der Java 6 __java.io.FileInputStream # close () __ Dokumentation

Schließen Sie den Dateieingabestream und die freien Systemressourcen, die diesem Stream zugeordnet sind. Wenn diesem Stream ein Kanal zugeordnet ist, schließen Sie diesen Kanal ebenfalls.

Es gibt also, schließen wir FileInputStream (FileOutputStream). Ist es so etwas? (Es ist in Ordnung, auch FileChannel zu schließen. Das Aufrufen der FileInputStream- und FileChannel-Schließmethoden stürzt nicht ab, obwohl dies keinen Sinn ergibt.)

Probe 2


	public static void copyFile(File sf, File df) {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		try {
			fis = new FileInputStream(sf);
			fos = new FileOutputStream(df);
			
			FileChannel sc = fis.getChannel();
			FileChannel dc = fos.getChannel();
			dc.transferFrom(sc, 0, sc.size());
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fos != null) try { fos.close(); } catch (IOException e) {}
			if (fis != null) try { fis.close(); } catch (IOException e) {}
		}
	}

Daher ist es weniger wahrscheinlich, dass Beispiel 2 gewarnt wird, wenn später ein statisches Syntaxanalysetool usw. eingeführt wird. Wenn Sie im Internet suchen und Sample 1 kopieren möchten, verwenden Sie Sample 2. ~~ Es wird für die Leute einfacher sein, später zu warten ~~

Wenn Sie Ihre eigenen in Java7 oder höher implementieren möchten, try-with-resources-Anweisung. Bitte benutzen Sie HTML). Es wird sehr einfach sein.

Referenz

Recommended Posts

Informationen zur Dateikopierverarbeitung in Java
Gemessene Parallelverarbeitung mit Java
Über Java Abstract Class
Deep Copy Collection in Java
Lesen Sie die Java-Eigenschaftendatei in C #
Entpacken Sie die Zip-Datei in Java
Protokollausgabe in Datei in Java
Informationen zum Zurückgeben einer Referenz in einem Java Getter
[Erstellen] Ein Memorandum über das Codieren in Java
Informationen zu Datensätzen, die zur Vorschau in Java JDK 14 hinzugefügt wurden
Android Asynchrone UI-Thread-Verarbeitung
Lesen Sie die xlsx-Datei in Java mit Selenium
Fortsetzung Sprechen Sie über das Schreiben von Java mit Emacs @ 2018
Beispiel zum Entpacken einer gz-Datei in Java
[Java] Informationen zu Java 12-Funktionen
Partisierung in Java
[Java] Über Arrays
Janken in Java
Etwas über Java
Java-Thread-Verarbeitung
Wo ist mit Java?
[Java] -Schnittstelle
Java-String-Verarbeitung
Über die Java-Klasse
Informationen zu Java-Arrays
Über Java-Vererbung
Über Schnittstelle, Java-Schnittstelle
[Java] Multithread-Verarbeitung
Über das Phänomen, dass StackOverflowError bei der Verarbeitung mit regulären Java-Ausdrücken auftritt
Umfangsrate in Java
[Java] Stream-Verarbeitung
FizzBuzz in Java
Beim Aufrufen von println usw. aus einer externen Java-Klassendatei in Processing
Über Java Var
Über Java Literal
Informationen zu Java-Befehlen
Java iterativer Prozess
Java, das eine Datei im Vmg-Format im EML-Format ausgibt
Über die Verwirrung beim Starten von Java-Servern
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Über die Idee anonymer Klassen in Java
Eine Geschichte über das JDK in der Java 11-Ära
Versuchen Sie, etwa 30 Zeilen in Java zu kratzen (CSV-Ausgabe)
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Informationen zu in Java verwendeten Variablen (lokaler Variablentyp)
Die Geschichte des Versuchs, JAVA File zu bedienen
Eine Bat-Datei, die Java in Windows verwendet
Einführung des NLP4J- [000] Natural Language Processing Index in Java
Informationen zur Java-Protokollausgabe
Informationen zur Java-Funktionsschnittstelle
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
[Android / Java] Bildschirmübergang und Rückgabeverarbeitung in Fragmenten
Janken App in Java
Einschränkungsprogrammierung in Java
Über die Klassenteilung (Java)
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java