Program kończy działanie bez wykonywania wszystkich instrukcji

0

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;
    }
  }
}
0

Użyj debugera.

0

debugger wyświetlił poniższe komentarze:

Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable

czy dobrze rozumiem, że gdzieś są jakieś nieprzechwycone wyjątki? tylko które instrukcje mogłyby je generować? pierwszy raz korzystam z tego narzędzia i nie wiem jak interpretować wyniki.

0

pierwszy raz korzystam z tego narzędzia i nie wiem jak interpretować wyniki.

Debugger to podstawowe narzędzie w pracy programisty. Zacznij od jego opanowania:
Jeśli używasz innego IDE to podpowiem, że wystarczy wpisać w goolge "jak używać debuggera + [nazwa IDE]".

0

@estudiante o_O używanie debugera nie polega na kliknieciu "run debug" i tyle. To tak nie działa. Zacznij od postawienia breakpointa na początku twojego main() i dopiero potem uruchom debuger.

1 użytkowników online, w tym zalogowanych: 0, gości: 1