Java erstellt leere Datei

Hallo, ich möchte ein Programm in Eclipse schreiben, dass eine HTML Datei einliest, die Umlaute einliest und ersetzt und anschließend eine neue Datei mit den ersetzten Umlauten schreibt. Die Datei wird auch eingelesen, aber die neue Datei ist einfach leer.
Vielleicht kann mir ja jemand von euch helfen, stehe aufm Schlauch.
Das hier ist mein Code:

Java:
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;



public class HtmlConv {

    public HtmlConv() {
    }

    public static void main(String[] args) throws IOException {
        // Name der einzulesenden Datei
        String dateiName = "datei1702_vor.html";
        // Name der Datei in die geschrieben wird
        String dateiName2 = "datei1702_nach.html";
        
        //Methode zum einlesen der Datei
        leseDatei(dateiName, dateiName2);
    }

    /**
     * Methode zum einlesen und aendern der Datei
     * @param dateiName
     *             Name der Datei aus der Daten gelesen werden
     * @param dateiName2
     *             Name der Datei in der Daten geschrieben werden
     * @throws IOException
     */
    public static void leseDatei(String dateiName, String dateiName2) throws IOException {
    //Drei Eingabestroeme erzeugen und mit Datei verbinden
    FileInputStream fiStream = new FileInputStream(dateiName);
    InputStreamReader isReader = new InputStreamReader(fiStream);
    BufferedReader bReader = new BufferedReader(isReader);
    
    //Drei Ausgabestroeme erzeugen
    FileOutputStream foStream = new FileOutputStream(dateiName2);
    OutputStreamWriter osWriter = new OutputStreamWriter(foStream);
    BufferedWriter bWriter = new BufferedWriter(osWriter);
    
    
    do {
        String text = bReader.readLine();
        System.out.println(text);
        
        text = text.replace("ä", "ä").replace("Ä", "Ä")
                .replace("ö", "ö").replace("Ö", "Ö")
                .replace("ü", "ü").replace("Ü", "Ü")
                .replace("ß", "ß");
    
        System.out.print(text);
        
        bWriter.write(text);
        bWriter.write(System.getProperty("line.seperator"));
    
        
    } while (bReader.ready());
    //Eingabestrom schliessen
    bReader.close();
    //Ausgabestrom-Buffer leeren
    bWriter.flush();
    //Ausgabestrom schliessen
    bWriter.close();
    }
}
 
Also die Zeile 58 dürfte eine NullPointerException werfen. Wenn du Fragen stellst, dann solltest du Fehlermeldungen immer mit angeben.
Java:
            bWriter.write(System.getProperty("line.seperator")); // NPE

            bWriter.write(System.lineSeparator()); // OK
            bWriter.write(System.getProperty("line.separator")); // OK
Weiterhin solltest du das ry-with-resources Statement verwenden: http://javatricks.de/tricks/das-try-with-resources-statement
 
Also die Zeile 58 dürfte eine NullPointerException werfen. Wenn du Fragen stellst, dann solltest du Fehlermeldungen immer mit angeben.
Java:
            bWriter.write(System.getProperty("line.seperator")); // NPE

            bWriter.write(System.lineSeparator()); // OK
            bWriter.write(System.getProperty("line.separator")); // OK
Weiterhin solltest du das ry-with-resources Statement verwenden: http://javatricks.de/tricks/das-try-with-resources-statement
Oha ja, bitte Entschuldige! Ich bekomme folgende Fehlermeldung:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.io.Writer.write(Writer.java:249)
at HtmlConv.leseDatei(HtmlConv.java:58)
at HtmlConv.main(HtmlConv.java:23)
 
Die NullPointerException führt hier zum sofortigen Ende des Programms. Deshalb ist die Zieldatei leer.
Ok, die NullPointerException taucht nun nicht mehr auf, meine Datei ist jetzt nicht mehr leer, allerdings hat sich absolut nichts verändert in dem Text.
Danke dir für den Hinweis! Allerdings verstehe ich das try-with-resources Statement nicht so ganz, da ich doch am Ende meines Codes alle Reader/Writer schließe (dachte ich zumindest)?
 
Allerdings verstehe ich das try-with-resources Statement nicht so ganz, da ich doch am Ende meines Codes alle Reader/Writer schließe (dachte ich zumindest)?
In Deinem Code oben wird eine Exception ausgelöst und damit wird der Code, der danach kommt, nicht mehr ausgeführt. Deine Dateien werden also nicht mehr geschlossen. try-with-resources sorgt dagegen dafür, dass alles, was AutoCloseable implementiert (z. B. Deine Streams), auch im Fall einer Exception geschlossen werden.
 
In Deinem Code oben wird eine Exception ausgelöst und damit wird der Code, der danach kommt, nicht mehr ausgeführt. Deine Dateien werden also nicht mehr geschlossen. try-with-resources sorgt dagegen dafür, dass alles, was AutoCloseable implementiert (z. B. Deine Streams), auch im Fall einer Exception geschlossen werden.
Vielen Dank, jetzt hab ich verstanden wofür ich das brauche. Fehlermeldungen gibt es keine mehr.
Jetzt bleibt mir nur noch das Problem, dass in der ...nach.html der gleiche Text steht wie in der ...vor.html
 

Zurück
Oben