Wie kann eine beliebige Datei kopiert werden?
Die Klasse deklariert eine Methode copyFile(File in, File out), der ein Eingabe- und ein Ausgabe-Filobjekt übergeben werden. Beide Dateien müssen existieren oder ggf. mit
File file = new File("/home/user/test.txt");
file.createNewFile();
erzeugt werden.
Zunächst werden von beiden File-Objekten
über InputStreams deren FileChannels erzeugt. Die Methode FileChannel.transferTo()
nimmt zwei long-Werte für den zu übertragenden
Bereich und den schreibbaren Channel des Zielobjektes entgegen. Die
Prozedur muss mit einem try-catch-Block abgesichert werden,
da eine IOException geworfen werden kann. Nach Abschluss des
Transfers müssen beide Channels wieder geschlossen werden.
package dateienUndVerzeichnisse;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class DateiKopierenClass {
public static void main(String[] args) throws IOException {
File inF = new File("/home/user/inputFile.txt");
File outF = new File("/home/user/outputFile.txt");
copyFile(inF, outF);
}
public static void copyFile(File in, File out) throws IOException {
FileChannel inChannel = null;
FileChannel outChannel = null;
try {
inChannel = new FileInputStream(in).getChannel();
outChannel = new FileOutputStream(out).getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} catch (IOException e) {
throw e;
} finally {
try {
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
} catch (IOException e) {}
}
}
}