RandomAccessFile Problem

thomasbe

Mitglied
Guten Tag,
ich habe eine Frage zum RandomAccessFile.
Ich möchte nämlich aus einer XML die Zeile mit dem Doctype rauslöschen. Ich kopiere dazu die XML in einen Temp Ordner meines Programmes und wenn die Zeile mit dem Doctype kommt schreibe ich sie einfach nicht rein.
Die XML ist im UTF8 Format.

So sieht mein Code aus:

Code:
try{
            File OldDatei = new File(jTextField1.getText());
            RandomAccessFile OldFile = new RandomAccessFile(OldDatei, "r"); 
            
            File NewDatei = new File(java.lang.System.getProperty("user.dir") + "\\iTunesLibraryTemp.xml");
            RandomAccessFile NewFile = new RandomAccessFile(NewDatei, "rw");
            
            NewFile.writeUTF(OldFile.readLine());
            String TempLine = OldFile.readLine();
            
            if(!TempLine.equals("<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"))
                NewFile.writeUTF(TempLine);
            
            while(true){                    
                NewFile.writeUTF(OldFile.readUTF());                      
            } 
            
        }
        catch(Exception e){
            System.out.println(e);
        }

Mein Problem ist, dass er mir nicht alles schreibt. Er hört einfach auf und bringt java.io.UTFDataFormatException: malformed input around byte 0
Aber ich glaube das ist weil er nichts mehr hat, oder? ich hab ja eine endlos schleife die einfach solange ausliest bis nichts mehr kommt und er die schleife über catch abbricht. Ich weiß es ist nicht die beste möglichkeit aber ich bin fast am verzweifeln weil ich niergends was richtiges finde :-(
 
Willst du denn die gesamte Datei kopieren? Dann bräuchstest du ja kein RandomAccessFile.

Die Exception bekommst du weil:
UTFDataFormatException - if the bytes do not represent valid modified UTF-8 encoding of a Unicode string.

Am Ende der Datei wäre es eine EOFException.
 
Willst du denn die gesamte Datei kopieren? Dann bräuchstest du ja kein RandomAccessFile.

Also ich will die ganze Datei kopieren bis auf die eine Zeile die ich rausfiltere, deshalb dachte ich ich mache es mit dem RandomAccessFile. Oder ist das ein schlechter Ansatz ?! Das Problem ist halt das wenn ich die ganze Datei kopiere kann ich sie ja nicht gleichzeitig filtern...


Die Exception bekommst du weil:
UTFDataFormatException - if the bytes do not represent valid modified UTF-8 encoding of a Unicode string.

Sorry, ganz dumme Frage was will mir dieser Satz sagen ?! :confused:

Danke für deine Antwort zeja
 
Zurück