Hallo,
ich habe eine Frage zu einer Studienaufgabe:
Die Aufgabe ist, eine Datei effektiv zu kopieren.
Randbedingungen: Datei kann Byte für Byte kopiert werden. Dateiname/Pfad soll vom Nutzer auf der Konsole eingegeben werden können.
Der Name der Zieldatei ist mit der Quelldatei identisch, nur um ein .bak ergänzt.
Nutzer soll über Erfolg/Misserfolg unterrichtet werde.
Ich habe das mal umgesetzt und es funktioniert. Könnt ihr mal drüberschauen, und mir sagen, ob es da noch was zu verbessern gibt (eleganz, effizienz etc.) Bitte auch Tips geben, wenn ich Konventionen etc. verletze.
Vielen Dank für eure Hilfe
Noar
ich habe eine Frage zu einer Studienaufgabe:
Die Aufgabe ist, eine Datei effektiv zu kopieren.
Randbedingungen: Datei kann Byte für Byte kopiert werden. Dateiname/Pfad soll vom Nutzer auf der Konsole eingegeben werden können.
Der Name der Zieldatei ist mit der Quelldatei identisch, nur um ein .bak ergänzt.
Nutzer soll über Erfolg/Misserfolg unterrichtet werde.
Ich habe das mal umgesetzt und es funktioniert. Könnt ihr mal drüberschauen, und mir sagen, ob es da noch was zu verbessern gibt (eleganz, effizienz etc.) Bitte auch Tips geben, wenn ich Konventionen etc. verletze.
Code:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
public class DateiKopierer {
/**
* This class copies a file byte by byte.
* The original filename will be reused (with a new suffix "bak").
*
* @param args
* @author Thomas Wenzel
*/
public static void main(String[] args) {
//Read filename from console
BufferedReader buffReader=new BufferedReader(new InputStreamReader(System.in));
String strInput;
try {
System.out.print("Source file: ");
strInput = buffReader.readLine();
//Copy file
String strDestFilename = strInput+".bak";
File fileSrc = new File(strInput);
File fileDes = new File(strDestFilename);
System.out.println("Copy file '"+strInput+"' to '"+strDestFilename+"'");
try {
byte[] streamBuffer = new byte[1024]; // Buffer für gelesene Daten
InputStream in = new FileInputStream(fileSrc);
OutputStream out = new FileOutputStream(fileDes);
for (int n; (n = in.read(streamBuffer)) != -1; out.write(streamBuffer, 0 , n));
in.close();
out.flush();
out.close();
System.out.println("Copy successfully finished.");
} catch (IOException e) {
System.out.println("Error while copy file '"+strInput+"'");
e.printStackTrace();
}
}
catch(IOException e) {
System.out.println("Input data error!");
}
}
}
Vielen Dank für eure Hilfe
Noar