Donnerstag, 16. April 2009

Dateien kopieren

geht Häufig ist es bisher nicht vorgekommen, dass ich von einer Anwendung aus Dateien kopieren wollte. Auf die Frage, wie man das macht, hätte ich spontan den üblich Algorithmus wiedergegeben und auf die apache FileUtils verwiesen.


  byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}

Es geht aber auch besser - nämlich via FileChannel. Die FileChannel setzen weiter unten an und bieten ein paar Möglichkeiten zum Dateihandling auf nativer Ebene an, was dann etwas performanter vonstatten geht. Ein Beispiel, was ich hierzu gefunden habe:


public static void copyFile(File sourceFile, File destFile) throws IOException {
if(!destFile.exists()) {
destFile.createNewFile();
}

FileChannel source = null;
FileChannel destination = null;
try {
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
}
finally {
if(source != null) {
source.close();
}
if(destination != null) {
destination.close();
}
}

Quelle javalobby

Keine Kommentare:

Kommentar veröffentlichen