Umwandlung von Sonderzeichen in HTML-Datei mit Ausgabe

Status
Nicht offen für weitere Antworten.

Semox

Bekanntes Mitglied
Hallo Java Forum

Ich habe hier eine Problem mit einer NullPointer Exception. Ich weiß leider nicht was man da machen muß. Ich habe anbei den Quelltext meines Programms, der das Folgende tun soll:

1. Einlesen einer HTML Datei von einem beliebigen Ort aus.
2. Angabe des Speicherorts für die Ausgabe der korrigierten Daten.
3. Zeilenweises Einlesen und Prüfen auf Umlaute via vorprüfender Schleife
4. Zeilenweises Schreiben der veränderten Inhalte in eine andere HTML Datei.

Ich hoffe Ihr könnt mir sagen, wie ich das richtig machen muß.


Lieben Dank,
Semo

Was die Kommandozeile auswirft:
Code:
init:
deps-jar:
compile-single:
run-single:
##############################################################
Programm zum Pruefen und Ersetzen von Umlauten in HTML-Dateien
##############################################################

Bitte geben Sie den kompletten Dateinamen der HTML Datei ein:
c:\vo.html
Danke.
Bitte geben Sie nun den vollstaendigen Namen der zu erzeugende Datei mit korrigierten Inhalt an:
c:\nach.html

c:\vo.html

c:\nach.html
Exception in thread "main" java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:140)
        at le02_htmlconv.main(le02_htmlconv.java:65)
Java Result: 1
BUILD SUCCESSFUL (total time: 28 seconds)




Der QUELLTEXT:

Code:
/**
 * Beschreibung 
 * @author Sebastain Morkisch
 * @date 14.10.2008
 * @version 0.9
 */

import java.io.*;

public class le02_htmlconv implements Serializable {
    
    public static void main(String[] args) throws IOException {
    
        System.out.println("##############################################################");
        System.out.println("Programm zum Pruefen und Ersetzen von Umlauten in HTML-Dateien");
        System.out.println("##############################################################");
        System.out.println();
        
        //Vorbereitung etwas aus der Konsole zu lesen
        String DateinameEIN = "";
        String DateinameAUS = "";
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        //Einlesen des Dateipfades
        System.out.println("Bitte geben Sie den kompletten Dateinamen der HTML Datei ein:");
        DateinameEIN = br.readLine();
        System.out.println("Danke.");
        System.out.println("Bitte geben Sie nun den vollstaendigen Namen der zu erzeugende Datei mit korrigierten Inhalt an:");
        DateinameAUS = br.readLine();
        
        //Test auf Einleseschwierigkeiten
        System.out.println();
        System.out.println(DateinameEIN);
        
        System.out.println();
        System.out.println(DateinameAUS);
        
        //Konstruktor zum Einlesen einer Datei, sowie Umwandlung des Bytestroms in Char-Data mit Unterstuetzung eines Puffers.
        FileInputStream fiStream = new FileInputStream(DateinameEIN);
        InputStreamReader iStreamR = new InputStreamReader(fiStream);
        BufferedReader buffRead = new BufferedReader(iStreamR);
        
        String inhalt = "";
        
        //Zeilenweises Pruefen und Ersetzen des HTML Inhalts
        while (true) {
            inhalt = buffRead.readLine();
            //Bei erreichen des Dateiendes, Abbruch des Einlesens und Pruefens
            if (inhalt == null) break;
        
            inhalt = inhalt.replace("ß", "&_szlig;"); //habe ein underscore gesetzt, damit das Forum das Zeichen nicht interpretiert
            inhalt = inhalt.replace("ä", "&_auml;");
            inhalt = inhalt.replace("Ä", "&_Auml;");
            inhalt = inhalt.replace("ö", "&_ouml;;");
            inhalt = inhalt.replace("Ö", "&_Ouml;");
            inhalt = inhalt.replace("ü", "&_uuml;");
            inhalt = inhalt.replace("Ü", "&_Uuml;");
        }
        
        //Konstruktion der Ausgabestroeme
        FileOutputStream foStream = new FileOutputStream(DateinameEIN);
        OutputStreamWriter oStreamW = new OutputStreamWriter(foStream);
        BufferedWriter buffWrite = new BufferedWriter(oStreamW);
        
        //Zeilenweises Schreiben ersetzter Inhalte
        buffWrite.write(inhalt);
        buffWrite.newLine();
        
        //Schliessung aller offenen IOps
        buffRead.close();
        buffWrite.close();
        }
    }
 
G

GastsaG

Gast
die variable inhalt ist null. wenn du aus der Whileschleife rausgehst (und du gehst da wirklich nur dann raus, wenn inhalt null ist) ist inhalt null. und dann gibt es ein KnallPointerException beim write()
 
S

SlaterB

Gast
deine while-Schleife endet, wenn inhalt null ist (Zeile 50)

nach der Schleife ist inhalt also null, um es nochmal zu sagen,
in Zeile 67 schreibst du inhalt in die Datei, inhalt ist null, es gibt eine NullPointerException,
keine Idee für Zusammenhänge?

alle anderen inhalt-Zeilen aus der while-Schleife werden übrigens bisher nicht genutzt,
es bietet sich an, die Zeilen 67 und 68 in die Schleife zu verlegen
 

Semox

Bekanntes Mitglied
Hallo ihr beiden

Danke für die schnelle Antwort.

Ich glaube es zu verstehen und würde es gern nachvollziehen. Mein Problem ist also, daß ich statt zu prüfen, ob das Dateiende erreicht ist, bereits nach dem ersten Durchgang den Stringinhalt von "inhalt" auf NULL setze und dann beim nächsten Schleifendurchlauf nur noch NULL erhalte, statt einer Referenz auf Stringobjekt? Kommt es dadurch zu diesem Ausnahmefehler?

Falls ich falsch liege korrigiert mich bitte.

lg,
Semo
 

0x7F800000

Top Contributor
1)
Code:
//OMFG!
& & & &
Sag mal, hälst du diejenigen, die diesen code-tag da eingebaut haben für total bescheuert? ;)
EDIT: sorry, die leute, die diesen tag gebaut haben, sind total bescheuert, habs eben auch mit dem a-umlaut versucht ???:L
2)
Nein. Du ließt in der while-schleife alles zeilenweise raus. In jeder ausgelesenen Zeile nimmst du irgendwelche änderungen vor. Dann schmeisst du die abgeänderte Zeile raus, ohne die irgendwohin zu schreiben.

Erst wenn nichts mehr da ist, und du für inhalt "null" bekommst, gehst du aus der schleife raus, und versuchst irgendwas zu schreiben, was selbstverständlich mit einer Exception endet... Wie SlaterB bereits gesagt hat: alle schreibbefehle müssen auch in die while-schleife rein.
 

Semox

Bekanntes Mitglied
Hallo Andrey

Zu 1)
Verstehe ich nicht. Wenn Du das mit dem Underscore meinst, dann füge doch mal ein & ein und der Kram wird interpretiert, solange es sich im Code Tag befindet...

Oder was meinste?

Zu 2)

Vielen Dank. Jetzt verstehe ich. Ich probiere es nochmal richtig zu machen.

Viele Grüße
SemoX
 

0x7F800000

Top Contributor
zu 1) : ja, wie gesagt, entschuldigung, dieser bug ist mir bisher merkwürdigerweise nicht aufgefallen :shock:
 

Semox

Bekanntes Mitglied
Hallo zusammen

Jetzt geht es. Zur Lösung:

In Zeile 62 habe ich statt "DateiAUS" die Variable "DateiEIN" verwechselt.

Und wie SlaterB richtig vorgeschlagen hat, habe ich die Schleife nur ergänzt.

Anbei das Fragment von Zeile 47-59:

Code:
while (true) {
            inhalt = buffRead.readLine();
            //Bei erreichen des Dateiendes, Abbruch des Einlesens und Pruefens
            if (inhalt == null) break;
        
            //Ersetzung aller Umlaute
            inhalt = inhalt.replace("ß", "&");
            inhalt = inhalt.replace("ä", "&");
            inhalt = inhalt.replace("Ä", "Ä");
            inhalt = inhalt.replace("ö", "&");
            inhalt = inhalt.replace("Ö", "Ö");
            inhalt = inhalt.replace("ü", "&");
            inhalt = inhalt.replace("Ü", "Ü");
            
            //Zeilenweises Schreiben ersetzter Inhalte
            [color=red]buffWrite.write(inhalt);
            buffWrite.newLine();   [/color]     
        }

Ich danke allen für die Hilfe.

lg,
SemoX
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
M Operatoren Umwandlung div. Operatoren Java Basics - Anfänger-Themen 7
B Date - Umwandlung OffsetDateTime Java Basics - Anfänger-Themen 11
J Probleme bei der Umwandlung einer Farbe von Hex zu RGB Java Basics - Anfänger-Themen 8
J Umwandlung for-Schleife Java Basics - Anfänger-Themen 10
R Fehler bei ASCII Char zu Int Umwandlung Java Basics - Anfänger-Themen 2
M Umwandlung von StringArray in String Java Basics - Anfänger-Themen 2
P Umwandlung in Javacode Java Basics - Anfänger-Themen 10
M Umwandlung String zu int Java Basics - Anfänger-Themen 2
M Umwandlung von Array zu ArrayList Java Basics - Anfänger-Themen 7
S Umwandlung Binär in Dezimal (ohne array etc.) Java Basics - Anfänger-Themen 6
L Interface JOptionPane Umwandlung Java Basics - Anfänger-Themen 10
A Char Bytes Umwandlung und Darstellung Java Basics - Anfänger-Themen 3
K Datentypen Umwandlung einer Textfeldeingabe in einen binären Wert Java Basics - Anfänger-Themen 2
G Umwandlung in verschiedene Zahlensysteme Java Basics - Anfänger-Themen 4
L Umwandlung von String to Int funktioniert nciht Java Basics - Anfänger-Themen 3
V Methoden Umwandlung in generische Methode Java Basics - Anfänger-Themen 8
J Datentypen Umwandlung von Arraylist in ein StringArray Java Basics - Anfänger-Themen 10
J Datentypen Umwandlung von Kommazahl in Punktzahl Locale DE auf US Java Basics - Anfänger-Themen 5
A Umwandlung einer Datei ins int Java Basics - Anfänger-Themen 26
A Umwandlung gcj -> java Java Basics - Anfänger-Themen 4
F Umwandlung vom Dezimalsystem Java Basics - Anfänger-Themen 7
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
N Umwandlung String - double für mehrdimensionalen array Java Basics - Anfänger-Themen 2
L Umwandlung int <--> byte Java Basics - Anfänger-Themen 2
S Umwandlung von Integer zu String Java Basics - Anfänger-Themen 4
F Datentypen Umwandlung int in String Java Basics - Anfänger-Themen 6
Screen Kurze Frage Umwandlung von Zahlen Java Basics - Anfänger-Themen 2
A Umwandlung int[][][] in String Java Basics - Anfänger-Themen 7
A umwandlung biginteger in int[] Java Basics - Anfänger-Themen 9
A einlesen, schreiben, umwandlung datentyp Java Basics - Anfänger-Themen 10
J Wrapperklasse und ihre Umwandlung Java Basics - Anfänger-Themen 2
Screen Erklärung von der Umwandlung von .class in .jar o. .exe ! Java Basics - Anfänger-Themen 5
B Umwandlung gemäß Package-Anweisung Java Basics - Anfänger-Themen 5
$ Umwandlung von Schleifen in andere Java Basics - Anfänger-Themen 4
S Problem bei Umwandlung ins Hexadezimalsystem Java Basics - Anfänger-Themen 2
D Umwandlung char -> dezimalzahl und ausgabe als int Java Basics - Anfänger-Themen 5
G Umwandlung Java Basics - Anfänger-Themen 7
A String to Char Umwandlung. Java Basics - Anfänger-Themen 7
R "Umwandlung" SQL-Result in Objekt Java Basics - Anfänger-Themen 5
H Umwandlung von Zahlensystemen Java Basics - Anfänger-Themen 7
E Umwandlung von std, min und sek Java Basics - Anfänger-Themen 2
G Probleme mit Colour und Color, umwandlung möglich? Java Basics - Anfänger-Themen 5
J Umwandlung von Integer in Char Java Basics - Anfänger-Themen 8
Z Problem bei sql-date-Umwandlung Java Basics - Anfänger-Themen 2
T String als Array und Umwandlung in Char Java Basics - Anfänger-Themen 7
R Umwandlung Java Basics - Anfänger-Themen 35
G Frage zu Umwandlung char[] in string[] bzw. Schleifen Java Basics - Anfänger-Themen 9
S Umwandlung eines Character-Streams in ein Image Java Basics - Anfänger-Themen 17
N x.toString(x); umwandlung von long in String Java Basics - Anfänger-Themen 3
F Umwandlung von String in Integer Java Basics - Anfänger-Themen 3
S Umwandlung von int in String Java Basics - Anfänger-Themen 3
J Warum funktioniert meine Umwandlung nicht? Java Basics - Anfänger-Themen 3
Juelin Sonderzeichen wie Euro (€) Java Basics - Anfänger-Themen 4
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
C Wie erkennt man Sonderzeichen im String? Java Basics - Anfänger-Themen 26
J ireport Designer / CSV / Sonderzeichen was läuft falsch Java Basics - Anfänger-Themen 7
W Methoden Konvertierung von Sonderzeichen Java Basics - Anfänger-Themen 2
S Sonderzeichen '|' (u007C) mit Scanner einlesen Java Basics - Anfänger-Themen 1
T byte[] zu String mit Sonderzeichen Java Basics - Anfänger-Themen 2
J Datentypen Cast von int zu char führ zu 'Sonderzeichen' Java Basics - Anfänger-Themen 2
B Char-Vergleich Sonderzeichen Java Basics - Anfänger-Themen 6
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
E String soll mit Großbuchstaben anfangen und keine Sonderzeichen enthalten Java Basics - Anfänger-Themen 4
M Sonderzeichen werden nicht erkannt Java Basics - Anfänger-Themen 3
A Datentypen Sonderzeichen / Strings ersetzen Java Basics - Anfänger-Themen 3
K Sonderzeichen auf der Windowskonsole ausgeben Java Basics - Anfänger-Themen 8
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
F Sonderzeichen bei XML Serialisierung nicht konvertieren Java Basics - Anfänger-Themen 7
S String auf Sonderzeichen untersuchen Java Basics - Anfänger-Themen 6
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
M Sonderzeichen beim usedelimiter Java Basics - Anfänger-Themen 4
Z Sonderzeichen in einem String gezeichnen/bearbeiten Java Basics - Anfänger-Themen 6
S Sonderzeichen "§" wird nicht erkannt - Stichwort Encoding! Java Basics - Anfänger-Themen 13
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
Benji0815 Sonderzeichen Java Basics - Anfänger-Themen 8
M Sonderzeichen in einer Datei auslesen Java Basics - Anfänger-Themen 3
T JOption Pane: Sonderzeichen verbieten? Java Basics - Anfänger-Themen 14
G String und Sonderzeichen Java Basics - Anfänger-Themen 6
T Sonderzeichen in label Java Basics - Anfänger-Themen 4
B Exception bei ImageIO wegen sonderzeichen Java Basics - Anfänger-Themen 11
D Sonderzeichen ä,ü,ö werden als ? ausgegeben Java Basics - Anfänger-Themen 3
T Sonderzeichen Java Basics - Anfänger-Themen 2
G Sonderzeichen automatisch ändern lassen Java Basics - Anfänger-Themen 23
A XML-Datei erzeugen+Sonderzeichen erlauben Java Basics - Anfänger-Themen 10
L Sonderzeichen automatisch escapen. Java Basics - Anfänger-Themen 7
U Sonderzeichen die zweite Java Basics - Anfänger-Themen 16
H GPS über ser. Schnittst. liefert teilweise Sonderzeichen Java Basics - Anfänger-Themen 3
M RandomAccessFile schreibt Sonderzeichen vor String Java Basics - Anfänger-Themen 2
B String mit Sonderzeichen wie " oder = überprüfen Java Basics - Anfänger-Themen 2
H Datei mit Sonderzeichen Java Basics - Anfänger-Themen 8
G Newline Sonderzeichen aus File entfernen u als String speic? Java Basics - Anfänger-Themen 3
T Robot-Problem mit Sonderzeichen Java Basics - Anfänger-Themen 2
M java sonderzeichen filtern Java Basics - Anfänger-Themen 3
M Konvertierung v. Strings (evtl. mit Sonderzeichen) nach HTML Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben