Przenoszenie i uruchomienie pliku .class

0

Witam wszystkich.
Mam problem z uruchamianiem pliku po skopiowaniu go do prawidłowej ścieżki. Mam taki kod do przenoszenia plików:

 
        BufferedReader reader = new BufferedReader(new FileReader(from));
        BufferedWriter writer = new BufferedWriter(new FileWriter(to));
        StringBuilder  bytes  = new StringBuilder();
        
        String line;
        while((line = reader.readLine()) != null) {
            bytes.append(line);
            bytes.append("\n");
        }
        
        writer.write(bytes.toString());
        writer.close();
        reader.close();

Metoda ta przenosi plik do odpowiedniego pakietu. Gdy chcę uruchomić klasę, którą przesłałem występuje Exception:
Exception in thread "AWT-EventQueue-0" java.lang.ClassFormatError: Incompatible magic value 4022320623 in class file

Gdy nie przeniosę pliku za pomocą metody tylko sam ręcznie skopuję tę samą klasę wszystko działa bez błędów.
Mógłby ktoś pomóc ? Męczę się z tym już cały dzień a nie znalazłem odpowiedniego rozwiązania.

Pozdrawiam gorąco :)

0

Jeżeli dobrze rozumiem, to kopiujesz plik binarny. Pytanie więc brzmi dlaczego używasz readLine przewidzianego dla tekstu, to pewnie uszkadza plik...

1

Jest to nie tylko kwestia metody realLine() ale także klasy którą odczytujesz pliki binarne. Ogólnie jest to praca na strumieniach, czyli pracujemy z klasami dziedziczącymi po InputStream i OutputStream a nie Writer/Reader które służą do przetwarzania plików tekstowych. W przypadku Writer dochodzi kwestia kodowania znaków, gubienia danych, oraz poprawnego zakończenia linii. Możesz sprawdzić czy nie uszkodziłeś takiego pliku prostym programem jak Class Editor. Sprawdziłem tak przekopiowany plik klasy i nie można go poprawnie odczytać w przeciwieństwie do operowania na strumieniach.

1

Zrób to jak człowiek może? Jak korzystasz z Javy 7 to użyj klasy Files, która ma kilka wersji metody copy.

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