Java 8: Kopieren Verzeichnis rekursiv?
Sehe ich, dass Java 8 hat deutlich bereinigt Lesen den Inhalt einer Datei in einen String:
String contents = new String(Files.readAllBytes(Paths.get(new URI(someUrl))));
Frage ich mich, ob es etwas ähnliches (sauberer/weniger-code/präziser), für das kopieren von Verzeichnissen rekursiv. In Java 7 land, es ist immer noch so etwas wie:
public void copyFolder(File src, File dest) throws IOException{
if(src.isDirectory()){
if(!dest.exists()){
dest.mkdir();
}
String files[] = src.list();
for (String file : files) {
File srcFile = new File(src, file);
File destFile = new File(dest, file);
copyFolder(srcFile,destFile);
}
} else {
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0){
out.write(buffer, 0, length);
}
in.close();
out.close();
}
}
Aller Verbesserungen, die hier in Java 8?
- FYI
Files.readAllBytes(Paths.get(new URI(someUrl))
gibt es seit Java 7. - else-block kann man mit
java.nio.file.Files#copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption...)
auch seit 1.7 - Überprüfen Sie das Beispiel in der javadoc von FileVisitor: docs.oracle.com/javase/7/docs/api/java/nio/file/...
- Was ist mit diesem org.apache.Unterhaus.io.FileUtils.copyDirectory(File, Datei) ... es übernimmt die Aufgabe, Sicherheit ... 😀
InformationsquelleAutor smeeb | 2015-03-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In dieser Art und Weise der code sieht ein bisschen einfacher
Wie etwa den folgenden code
Path target = targetDir.resolve(sourceDir.relativize(path))
Diese version verwendet - Dateien.Spaziergang und Pfad Parameter als Java-8 schlägt.
meine version:
und eine weitere version:
seinen code verwenden java8-Dateien.walkFileTree Funktion.