Czołem!
kontynuując naukę programowania napisałem kod, który ma za zadanie kopiować zawartość pliku źródłowego do nowego pliku.
Nazwy plików są wprowadzane jako argumenty wywołania. W przypadku gdy plik do którego chcemy kopiować zawartość pliku źródłowego istnieje, program pyta czy należy go usunąć (patrz kod) i tu pojawia się problem gdyż po wybraniu odpowiedniej opcji (t), program nie usuwając rzeczonego pliku kończy działanie.
czy ktoś ma pomysł dlaczego tak się dzieje?
kod:
import java.io.*;
public class Copy {
public static void main (String args[]) {
if(args.length < 2){
System.out.println("Wywołanie programu: Copy");
return;
}
File sourceFile = new File(args[0]);
File destFile = new File(args[1]);
if(!sourceFile.exists()){
System.out.println("Plik źródłowy nie istnieje.");
return;
}
if(destFile.exists()){
System.out.println("Plik docelowy istnieje.");
System.out.println("Czy można skasować " + destFile +"? t/n");
BufferedReader brIn = new BufferedReader(
new InputStreamReader(System.in)
);
String line = "";
try{
while(!"t".equals(line) && !"n".equals(line)){
line = brIn.readLine();
if("t".equals(line)){
destFile.delete();
break;
}
if("n".equals(line)){
System.out.println("Plik zostanie nadpisany");
break;
}
System.out.println("Błędny wybór. Wybierz t/n");
}
}
catch(IOException e){
System.out.println("Bład wejścia-wyjścia");
}
}
RandomAccessFile rafSource = null;
RandomAccessFile rafDest = null;
try{
rafSource = new RandomAccessFile(sourceFile, "r");
rafDest = new RandomAccessFile(destFile, "rw");
}
catch(FileNotFoundException e){
System.out.println("Błąd podczas otwierania plików: " + e);
return;
}
int count = 0;
int buffSize = 10000;
byte[] buff = new byte[buffSize];
try{
while((count = rafSource.read(buff)) != -1){
rafDest.write(buff, 0, count);
}
rafDest.close();
rafSource.close();
}
catch(IOException e){
System.out.print("\nBłąd wejścia-wyjścia podczas kopiowania pliku.");
return;
}
}
}