replace Methode für Buchstaben

maGG

Bekanntes Mitglied
Hier die Methoden:
Java:
        //Methode für Sonderzeichen/Umlaute
        public String Html(String html){
            html = html.replace("Ä", "Ä");
            html = html.replace("ä", "ä");
            html = html.replace("Ö", "Ö");
            html = html.replace("ö", "ö");
            html = html.replace("Ü", "Ü");
            html = html.replace("ü", "ü");
            html = html.replace("ß", "ß");
            return html;
        }
        //Methode um die Email richtig zu bilden
        public String eHtml(String ehtml){
            ehtml = ehtml.replace("ä", "ae");
            ehtml = ehtml.replace("ö", "oe");
            ehtml = ehtml.replace("ü", "ue");
            ehtml = ehtml.replace("ß", "sz");
            return ehtml;
        }

Da hab ichs eingesetzt:
Java:
if(jComboBoxBereich.getSelectedItem() == "AG"){
                HtmlAG html = new HtmlAG(Html(varVorname), Html(varNachname), Html(varFunktion), Html(varStrasze), Html(varOrtPlz), varTel, varTelInt, varFax, varOrt, varSprachkombiHtml, eHtml(varVorname), eHtml(varNachname), titelVorn, titelHinten);
                htmlFinal = html.toHtmlAG(); //String Ausgabe
            }
Ja ich weiß die Parameter Namensgebung könnte besser sein, wahrscheinlich ändere ich es auch noch. Worum es geht?
Die Methode eHtml() funktioniert irgendwie nicht. Was ich möche ist folgendes: Wenn jemand Max Müstermann hieße, dann soll die e-Mail max.muestermann@blabla.de heißen und nicht mit ü. Die Methode obendrüber Html() funktioniert ja einwandfrei, da hab ich ja von euch hehe :) Ich dachte, dann könnte ich simple die darunter genauso machen, aber irgendwas habe ich vielleicht übersehen?
 
X

Xyz1

Gast
EMail gibt doch der Benutzer ein, diese muss (ggf. überprüft) gar nicht geändert werden.

Java:
public static boolean isValidEmailAddress(String email) {
   boolean result = true;
   try {
      InternetAddress emailAddr = new InternetAddress(email);
      emailAddr.validate();
   } catch (AddressException ex) {
      result = false;
   }
   return result;
}
- http://stackoverflow.com/a/5931718
 

Joose

Top Contributor
Da hab ichs eingesetzt:
Java:
if(jComboBoxBereich.getSelectedItem() == "AG"){
                HtmlAG html = new HtmlAG(Html(varVorname), Html(varNachname), Html(varFunktion), Html(varStrasze), Html(varOrtPlz), varTel, varTelInt, varFax, varOrt, varSprachkombiHtml, eHtml(varVorname), eHtml(varNachname), titelVorn, titelHinten);
                htmlFinal = html.toHtmlAG(); //String Ausgabe
            }
Strings vergleicht man mit equals nicht mit "=="!
Wo hast du es eingesetzt? In dem Code rufst du die Methode eHtml nur mit den Parametern "varVorname" bzw. "varNachname" auf. Nirgends wird eine E-Mail Adresse übergeben.

Anmerkung: Ich glaube es wäre viel schöner wenn sich die Klasse HtmlAG darum kümmert dass bei den einzelnen Werten die Umlaute ausgetauscht werden. Das würde den Konstruktoraufruf auch vereinfachen bzw. lesbarer machen.
 

maGG

Bekanntes Mitglied
Danke für die Hinweise!

@DerWissende: Die Email soll zusammengesetzt werden aus zwei Texfelder, dem varVornamen und varNachnamen. Von daher wäre so ein Funktion ziemlich nützlich - bei funktioniert sie auch bis jetzt immer noch nicht. Vielleicht habe ich auch etwas bei der toHtmlAG() Methode etwas falsch gemacht, irgendwo muss ja der Fehler liegen. Ich schaue heute abend mal ...

@Jose: Ja ich denke du hast recht, wenn der Rest dann auch noch funktioniert *grins*

Ich habe nochmal was anderes: Mir ist heute etwas aufgefallen: Wenn ich beim Vorname z.B. Im Textfeld "Name " mit Leerzeichen schreibe, dann ist bei der Email z.B. ne Lücke - nicht gerade ideal!

Kann ich in nem jTextfield Leerzeichen elemenieren? Oder kann ich die replace() Methode wieder dafür benutzen? Dann könnte ich einfach replace(" ", "") so vielleicht schreiben? :D Bin gerade nicht zuhause um es auszuprobieren.

Ich werde heute abend mal den Rest dazu hier noch posten, dann könnt ihr mir vielleicht noch mehr Tipps geben.

Und noch eine Sache :D Bei meinem Projekt wird eine html und txt Datei erstellt mit dem Buffed Writer. Die erstellten Dateien haben automatisch dann "UTF-8 ohne BOM", zu mindest zeigt mir das Notepad an. Es wäre aber besser wenn sie auf Unicode standardmäßig erstellt würden. Microsoft und Outlook machen so ihr eigenes Ding und haben keine Lust sich anzupassen - gerade bei der Textansicht bei Outlook und den Signaturen könnte das zu Problemen führen. Gibt es eine Möglichkeit der geschrieben Datei auch noch ein Hinwei zur Kodierung mitzugeben? Geht sowas?
 

mrBrown

Super-Moderator
Mitarbeiter
Ich habe nochmal was anderes: Mir ist heute etwas aufgefallen: Wenn ich beim Vorname z.B. Im Textfeld "Name " mit Leerzeichen schreibe, dann ist bei der Email z.B. ne Lücke - nicht gerade ideal!

Kann ich in nem jTextfield Leerzeichen elemenieren? Oder kann ich die replace() Methode wieder dafür benutzen? Dann könnte ich einfach replace(" ", "") so vielleicht schreiben? :D Bin gerade nicht zuhause um es auszuprobieren.
string.trim() ;)


Und noch eine Sache :D Bei meinem Projekt wird eine html und txt Datei erstellt mit dem Buffed Writer. Die erstellten Dateien haben automatisch dann "UTF-8 ohne BOM", zu mindest zeigt mir das Notepad an. Es wäre aber besser wenn sie auf Unicode standardmäßig erstellt würden. Microsoft und Outlook machen so ihr eigenes Ding und haben keine Lust sich anzupassen - gerade bei der Textansicht bei Outlook und den Signaturen könnte das zu Problemen führen. Gibt es eine Möglichkeit der geschrieben Datei auch noch ein Hinwei zur Kodierung mitzugeben? Geht sowas?
Bei einer txt nicht.
Bei html das schon mal genannte <meta charset="UTF-8">.
 

maGG

Bekanntes Mitglied
Bei html das schon mal genannte <meta charset="UTF-8">.
hmmm das geht halt glaube ich nicht, weil html Datei folgenden Aufbau hat:
HTML:
<span style="font-size:10pt;font-family:'Arial','sans-serif';color:#262626;">
Mit freundlichen Gr&uuml;&szlig;en<br /><br />
<strong>Max Mustermann</strong><br />
Praktikantin (DE/EN/RU &rarr; IT)<br /><br />

<a href="" title=""><img src="" width="100" height="27"></a><br /><br />

<strong>Firmierung</strong><br />
Adresse<br />
PLZ Ort<br /><br />

Tel.: <a href="" style="color:#02387D;"></a><br />
Fax: <br />

<a href="mailto:max.mustermann@blabla.com" style="color:#02387D;">max.mustermann@blabla.com</a> | <a href="mailto:bla.ort@blabla.com" style="color:#02387D;">bla.ort@e-kern.com</a> | <a href="" style="color:#02387D;">www.bla.com</a><br /><br />

<i><strong>texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext <a href="" title="">www.blabla.com</a> - texttexttexttexttext</strong></i><br /><br />
<a href="" title="" target="_blank"><img src="" width="16" height="16"></a>&nbsp;
<a href="" title="" target="_blank"><img src="" width="16" height="16"></a>&nbsp;
<a href="" title="" target="_blank"><img src="" width="16" height="16"></a>&nbsp;<br /></span>

<span style="font-size:7pt;font-family:'Arial','sans-serif';color:#58585A;">
-----------------------------------------------------------------------<br />
texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext<br />
texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext<br /><br />
texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext
Das ist keine Webseite, deswegen gibt es auch kein <head></head> Bereich. Gibt es vielleicht auch eine andere Lösung?
 

mrBrown

Super-Moderator
Mitarbeiter
Du benutzt den BufferedWriter sicher nicht direkt sondern hast den gewrappt mit einem anderem?
Einigen kann man das Charset angeben, da kannst du dann ein für Windows passendes auswählen
 

maGG

Bekanntes Mitglied
ich versuche das gerade mit der .trim() Methode, jedoch funktioniert sie nicht ganz. Also evorname.toLowerCase().trim() macht irgendwie einen Fehler. Auch (evorname.toLowerCase()).trim() geht nicht. Was übersehe ich?

Mein BufferedWriter sieht so aus:
Java:
            File Fhtml = new File(homeDirectory + "\\" + varVorname + " " + varNachname + "\\" + varVorname + " " + varNachname + ".html");
            try {
                BufferedWriter bw = new BufferedWriter(new FileWriter(Fhtml));
                bw.write(htmlFinal);
                bw.close();
                TextAreaAusgabe += "- html Datei wurde erfolgreich erstellt.\n";
            } catch(IOException ehtml){
                TextAreaAusgabe += "Es gab einen Fehler, die html Datei konnte nicht erstellt werden.\n";
            }
Kann ich da irgendwo noch die Kodierung dazu schreiben?
 

maGG

Bekanntes Mitglied
Wenn ich .trim() funktioniert der BuffedWriter nicht mehr und er springt in den catch rein.
Ich poste euch mal alles, bin grad zu faul alle Adressen etc. rauszulöschen, ich hoffe ihr dreht mir kein Strick draus.

hier die Klasse HtmlAG, inklusive Konstruktor und String Ausgabe:
Java:
public class HtmlAG extends GUI{
   
    String vorname, nachname, funktion, adresse, plzort, telefon, telefonint, fax, ort, sprachkombi, evorname, enachname,
            titelvorn, titelhinten;
   
    public HtmlAG() {
    }

    public HtmlAG(String vorname, String nachname, String funktion, String adresse, String plzort, String telefon,
    String telefonint, String fax, String ort, String sprachkombi, String evorname, String enachname,
    String titelvorn, String titelhinten){
        this.vorname = vorname;
        this.nachname = nachname;
        this.funktion = funktion;
        this.adresse = adresse;
        this.plzort = plzort;
        this.telefon = telefon;
        this.telefonint = telefonint;
        this.fax = fax;
        this.ort = ort;
        this.sprachkombi = sprachkombi;
        this.evorname = evorname;
        this.enachname = enachname;
        this.titelvorn = titelvorn;
        this.titelhinten = titelhinten;
    }
   
    public String toHtmlAG(){
    return "<span style=\"font-size:10pt;font-family:'Arial','sans-serif';color:#262626;\">\n"
                + "Mit freundlichen Gr&uuml;&szlig;en<br /><br />\n"
                + "<strong>" + titelvorn + Html(vorname).trim() + " " + Html(nachname).trim() + titelhinten + "</strong><br />\n"
                + Html(funktion).trim() + sprachkombi + "<br /><br />\n\n"
                + "<a href=\"http://www.e-kern.com/de.html?utm_source=logo&utm_medium=email&utm_campaign=signature_ag\""
                + " title=\"KERN AG, Sprachendienste\"><img src=\"http://www.e-kern.com/fileadmin/images/signatur/image001.png\""
                + " width=\"100\" height=\"27\"></a><br /><br />\n\n"
                + "<strong>KERN AG, Sprachendienste</strong><br />\n"
                + Html(adresse) + "<br />\n"
                + Html(plzort) + "<br /><br />\n\n"
                + "Tel.: <a href=\"tel:+" + telefonint + "\" style=\"color:#02387D;\">" + telefon + "</a><br />\n"
                + "Fax: " + fax + "<br />\n\n"
                + "<a href=\"mailto:" + eHtml(evorname).trim().toLowerCase() + "." + eHtml(enachname).trim().toLowerCase()  + "@e-kern.com\" style=\"color:#02387D;\">" + eHtml(vorname).trim().toLowerCase() + "." + eHtml(nachname).trim().toLowerCase()
                + "@e-kern.com</a> | <a href=\"mailto:kern." + ort.toLowerCase() + "@e-kern.com\" style=\"color:#02387D;\">kern." + ort.toLowerCase() + "@e-kern.com</a>"
                + " | <a href=\"http://www.e-kern.com/de.html?utm_source=link&utm_medium=email&utm_campaign=signature_ag\""
                + " style=\"color:#02387D;\">www.e-kern.com</a><br /><br />\n\n"
                + "<i><strong>Wir bieten auch Sprachkurse an. Neugierig? Schauen Sie doch mal rein unter <a href=\"http://www.kerntraining.com/de.html?utm_source=promotion&utm_medium=email&utm_campaign=signature_ag\" title=\"KERN AG Training\" style=\"color:#02387D;\">www.kerntraining.com</a> - wir beraten Sie gerne!</strong></i><br /><br />\n"
                + "<a href=\"http://www.facebook.com/KernAG\" title=\"Facebook\" target=\"_blank\"><img src=\"http://www.e-kern.com/fileadmin/images/signatur/image002.png\" width=\"16\" height=\"16\"></a>&nbsp;\n"
                + "<a href=\"https://plus.google.com/+kernag\" title=\"Google Plus\" target=\"_blank\"><img src=\"http://www.e-kern.com/fileadmin/images/signatur/image005.png\" width=\"16\" height=\"16\"></a>&nbsp;\n"
                + "<a href=\"https://twitter.com/#!/kern_ag\" title=\"Twitter\" target=\"_blank\"><img src=\"http://www.e-kern.com/fileadmin/images/signatur/image003.png\" width=\"16\" height=\"16\"></a>&nbsp;<br /></span>\n\n"
                + "<span style=\"font-size:7pt;font-family:'Arial','sans-serif';color:#58585A;\">\n-----------------------------------------------------------------------<br />\n"
                + "Firmensitz: KERN AG | Kurf&uuml;rstenstra&szlig;e 1 | 60486 Frankfurt am Main | Germany | Tel.: (069) 75 60 73-0 | Fax: (069) 74 66 14 | Vorstand: Manfred Kern (Vorsitzender), Michael Kern, Dr. Thomas Kern | Aufsichtsrat: Ruthild Birte Kern (Vorsitzende) | Sitz der Gesellschaft: Frankfurt am Main | Handelsregister: Amtsgericht Frankfurt am Main HRB 48945 | USt-IdNr.: DE811153381 | <a href=\"http://www.e-kern.com/de.html?utm_source=impressum&utm_medium=email&utm_campaign=signature_ag\" title=\"KERN AG, Sprachendienste\" style=\"color:#02387D;\">www.e-kern.com</a> | <a href=\"http://www.kerntraining.com/de.html?utm_source=impressum&utm_medium=email&utm_campaign=signature_ag\" title=\"KERN AG Training\" style=\"color:#02387D;\">www.kerntraining.com</a><br />"
                + "-----------------------------------------------------------------------<br />\n"
                + "Diese E-Mail ist nur f&uuml;r die genannten Empf&auml;nger bestimmt und kann vertrauliche Informationen enthalten. Wenn Sie nicht der richtige Empf&auml;nger sind, unterlassen Sie bitte das Lesen, Kopieren, die Benutzung oder die Weitergabe dieser Informationen an Dritte. Bitte verst&auml;ndigen Sie uns durch R&uuml;ckantwort oder telefonisch unter (069) 75 60 73-0 &uuml;ber den irrt&uuml;mlichen Erhalt dieser E-Mail. L&ouml;schen Sie bitte anschlie&szlig;end die E-Mail und hiervon gegebenenfalls existierende Kopien. Vielen Dank.<br />\n"
                + "<br />\n"
                + "This email communication (and any attachments) are confidential and are intended only for the individual(s) or entity named above and others who have been specifically authorized to receive it. If you are not the intended recipient, please do not read, copy, use or disclose the contents of this communication to others. Please notify us that you have received this email in error by replying to the email or by calling (069) 75 60 73-0. Please then delete the email and any of its copies. Thank you.</span><br /><br />\n"
                + "<span style=\"font-size:7pt;font-family:'Arial','sans-serif';color:green;\">Bitte denken Sie &uuml;ber Ihre Verantwortung gegen&uuml;ber der Umwelt nach, bevor Sie diese E-Mail ausdrucken. - Before printing this page please think about your responsibility to the environment.</span>\n"
                + "<p>&nbsp;</p>";
    }
}

hier der inzwischen abgeänderte Konstruktor-Aufruf (Habe die Methoden nun in HtmlAG geschrieben):
Java:
//Combobox mit Bereichsauswahl -> html
            if("AG".equals(jComboBoxBereich.getSelectedItem())){
                HtmlAG html = new HtmlAG(varVorname, varNachname, varFunktion, varStrasze, varOrtPlz, varTel, varTelInt, varFax, varOrt, varSprachkombiHtml, varVorname, varNachname, titelVorn, titelHinten);
                htmlFinal = html.toHtmlAG(); //String Ausgabe
            }

hier nochmal der BuffedWriter, damit ihr alles nötige in einem Post hab:
Java:
            File Fhtml = new File(homeDirectory + "\\" + varVorname + " " + varNachname + "\\" + varVorname + " " + varNachname + ".html");
            try {
                BufferedWriter bw = new BufferedWriter(new FileWriter(Fhtml));
                bw.write(htmlFinal);
                bw.close();
                TextAreaAusgabe += "- html Datei wurde erfolgreich erstellt.\n";
            } catch(IOException ehtml){
                TextAreaAusgabe += "Es gab einen Fehler, die html Datei konnte nicht erstellt werden.\n";
            }

Also nochmal zur Problemstellung: Wenn ich irgendwo in meiner Klasse HtmlAG in der toHtmlAG() Methode .trim() reinschreibe geht er in den catch rein. K.A. warum - Netbeans zeigt auch nix rot an oder so. Habt ihr ne Idee? :)
 

maGG

Bekanntes Mitglied
Code:
run:
java.io.FileNotFoundException: C:\Users\david\Desktop\  Mäx   Müstermann  \  Mäx   Müstermann  .html (Das System kann den angegebenen Pfad nicht finden)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
    at java.io.FileWriter.<init>(FileWriter.java:90)
    at signatur.GUI.jButton3ActionPerformed(GUI.java:1159)
    at signatur.GUI.access$500(GUI.java:35)
    at signatur.GUI$6.actionPerformed(GUI.java:214)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BUILD SUCCESSFUL (total time: 26 seconds)

Oh shit! :O :O :O

Hmm er findet den Pfad für den Writer nicht mehr oder? Würde es was bringen wenn ich .trim() auch bei den Writer Parametern einsetze?

edit: Ok daran lags hahaha ok manchmal bin ich echt dämlich! :D Das sind diese Dienstage, ich sachs euch! o_O
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Das klingt schon sinnvoll...vor allem hätte es Sinn, die Umwandlung im Konstruktor zu machen, und den gleichzeitig etwas schlanker zu machen. Die Parameter vorname und evorname sollten doch gleich sein, du kannst doch einfach this.evorname = eHtml(vorname); nutzen.

(und bitte änder doch mal deine Benennung und halte dich an Konventionen ;))
 

maGG

Bekanntes Mitglied
ah ja gut das werde ich noch machen! Ja die zwei zusätzlichen Parameter brauche ich dann eigentlich nicht mehr. Wie würdest du denn die Parameter nenne? einfach das "var" überall weglassen? Was Konventionen betrifft, davon habe ich keine Ahnung. Vor nem halben Jahr wusste ich gerade mal was ein Byte ist und das wars. Ich habe wirklich nur das wenige gelernt, was wir in de Vorlesungen und Übungen gesehen habe. Ich glaube ihr stimmt mir alle zu, dass man eine Programmiersprache nicht wirklich in einem halben Jahr lernen kann, v.a. wenn man in dem halben jahr noch 5 oder 6 andere Sachen hat in denen man Prüfungen schreibt
 

maGG

Bekanntes Mitglied
Mein Buffed Writer (kam noch nicht dazu ihn zu ändern) spuckt die Dateien in der Kodierung Ansi(1252) aus.
Kann es evtl. daran liegen, dass die Zeilenumbrüche mit \n nicht richtig dargestellt werden. Weil wenn ich die Dateien mit den normalen Editor von Windows öffne, dann erkennt er nicht all Zeilenumbrüche, wodurch die Datei ziemlich unleserlich wird.
Ich hoffe es liegt daran, weil mir ansonsten nichts mehr dazu einfällt.
Java:
            File Fhtml = new File(homeDirectory + "\\" + varVorname + " " + varNachname + "\\" + varVorname + " " + varNachname + ".html");
            try {
                new OutputStreamWriter(new FileOutputStream(Fhtml), StandardCharsets.UTF_8);
                TextAreaAusgabe += "- html Datei wurde erfolgreich erstellt.\n";
            } catch(IOException ehtml){
                TextAreaAusgabe += "Es gab einen Fehler, die html Datei konnte nicht erstellt werden.\n";
            }
Das funktioniert zu mindest noch nicht. Ich kenne diese Syntax mit 'new' bisher auch nur bei Konstruktoraufrufen, mir war nicht klar das man damit auch ne Zeile anfangen kann.

Die Klasse StandardCharsets funktioniert nur mit ISO_8859_1, US_ASCII, UTF_16, UTF_16BE, UTF_16LE, UTF_8 oder?
Quelle: https://docs.oracle.com/javase/8/docs/api/index.html?java/nio/charset/StandardCharsets.html

Weil ich habe hier gesehen, dass es noch viel mehr gibt:
http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html
 

krgewb

Top Contributor
Vielleicht hilft es dir wenn du deinen alten Thread nochmal anschaust. Im folgenden zitiere ich nochmal den Beitrag von JStein52:
Vielleicht hatte er die Datei mit einem Editor geöffnet der die \n nicht als neue Zeile anzeigt. z.B. den normalen Notepad ?! Denn mit dem sieht auch deine Datei sehr einzeilig aus !

Edit: schau mal beim Notepad++ unten in die Statuszeile. Da zeigt er dir an: Unix (LF) weil er erkennt dass es Unix-Style Zeilenvorschübe sind. Wenn du überall \r\n ausgibst zeigt er dir Windows an.
 

mrBrown

Super-Moderator
Mitarbeiter
Kann es evtl. daran liegen, dass die Zeilenumbrüche mit \n nicht richtig dargestellt werden. Weil wenn ich die Dateien mit den normalen Editor von Windows öffne, dann erkennt er nicht all Zeilenumbrüche, wodurch die Datei ziemlich unleserlich wird.
Unter Windows kannst du mal "\r\n" versuchen.

Das funktioniert zu mindest noch nicht. Ich kenne diese Syntax mit 'new' bisher auch nur bei Konstruktoraufrufen, mir war nicht klar das man damit auch ne Zeile anfangen kann.
Äh was? 'new' ist auch nur für Konstruktoraufrufe.
 

maGG

Bekanntes Mitglied
ok das mit \r\n funktioniert, perfekt Danke Leute!!

@VfL_Freak ja genau das meinte ich :D :D :D

Ich versuche mich gerade an dem OutputStreamWriter, aber es klappt nocht nicht:
Java:
            //hier wird die html Datei erstellt
            File Fhtml = new File(homeDirectory + "\\" + varVorname.trim() + " " + varNachname.trim() + "\\" + varVorname.trim() + " " + varNachname.trim() + ".html");
            try {
                /*BufferedWriter bw = new BufferedWriter(new FileWriter(Fhtml));
                bw.write(htmlFinal);
                bw.close();*/
                //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(htmlFinal), StandardCharsets.UTF_16);
                OutputStream outputStream = new FileOutputStream(htmlFinal);
                Writer outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-16");
               
                outputStreamWriter.write(htmlFinal);
                outputStreamWriter.close();
                //new OutputStreamWriter(new FileOutputStream(htmlFinal), StandardCharsets.UTF_8);
                TextAreaAusgabe += "- html Datei wurde erfolgreich erstellt.\n";
            } catch(IOException ehtml){
                TextAreaAusgabe += "Es gab einen Fehler, die html Datei konnte nicht erstellt werden.\n";
                ehtml.printStackTrace();
            }
Fehlermeldung:
Code:
(Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
    at signatur.GUI.jButton3ActionPerformed(GUI.java:1206)
    at signatur.GUI.access$500(GUI.java:40)
    at signatur.GUI$6.actionPerformed(GUI.java:223)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Also dieses Zeile macht den Fehler:
Java:
OutputStream outputStream = new FileOutputStream(htmlFinal);
Das von dir:
Java:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(htmlFinal), StandardCharsets.UTF_16);
habe ich auch ausprobiert, aber da kommt der gleiche Fehler. Hmm hab ich das vielleicht falsch geschrieben?
 

maGG

Bekanntes Mitglied
Ok ich habs selbst gelöst, durch probieren. Hatte u.a. 'htmlFinal' anstelle von 'Fhtml' drin - also die Datei, anstelle den Pfad. Und ich habe noch ne try-Schleife hinzugefügt:
Java:
            File Fhtml = new File(homeDirectory + "\\" + varVorname.trim() + " " + varNachname.trim() + "\\" + varVorname.trim() + " " + varNachname.trim() + ".html");
            try{
                try (
                    OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(Fhtml), StandardCharsets.UTF_16)) {
                    osw.write(htmlFinal);
                    osw.close();
                }
                TextAreaAusgabe += "- html Datei wurde erfolgreich erstellt.\n";
            } catch(IOException ehtml){
                TextAreaAusgabe += "Es gab einen Fehler, die html Datei konnte nicht erstellt werden.\n";
                ehtml.printStackTrace();
            }
Ich weiß aber nicht, warum ich das 2. try brauche und warum es jetzt funktioniert. Das war mehr so nen Zufallsprodukt o_O
Kann mir das vielleicht wer erklären? So funktioniert es, aber ich würde gern wissen warum :D
 

Senftube

Aktives Mitglied
Verrätst du uns auch welchen?


Mit ein bisschen umbauen, du kannst zB OutputStreamWriter nutzen:
new OutputStreamWriter(new FileOutputStream(mergedFile), StandardCharsets.UTF_8);

Das Charset natürlich anpassen

Oder auch mit nio
BufferedWriter bw = Files.newBufferedWriter(outfile,StandardCharsets.UTF_8); // UTF-8 ist default
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Nochmal Hilfe - Replace Methode Java Basics - Anfänger-Themen 2
D Probleme mit der String Methode replace() Java Basics - Anfänger-Themen 4
D replace() Methode in JSP Java Basics - Anfänger-Themen 2
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
monsterherz Replace mit Scan Java Basics - Anfänger-Themen 20
monsterherz replace Java Basics - Anfänger-Themen 12
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Replace mit Hilfe von ArrayLists Java Basics - Anfänger-Themen 6
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
M Verschlüsselung mit replace() Java Basics - Anfänger-Themen 35
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
D kann man vor dem CSVRecord, replace Anweisung anwenden ? Java Basics - Anfänger-Themen 2
J .replace mit Arraylisten Java Basics - Anfänger-Themen 4
Ananaskirsche Variablen Replace funktioniert nicht Java Basics - Anfänger-Themen 7
B Regular Expression bei replace Java Basics - Anfänger-Themen 11
M Problem mit Array und replace Java Basics - Anfänger-Themen 3
P Replace zählen Java Basics - Anfänger-Themen 4
P replace[Frage] Java Basics - Anfänger-Themen 2
V String replace ? Java Basics - Anfänger-Themen 6
J Erste Schritte replace von minus Zeichen wird nicht gemacht Java Basics - Anfänger-Themen 7
S string.replace funktioniert nicht Java Basics - Anfänger-Themen 10
U String.replace mit Umlauten Java Basics - Anfänger-Themen 14
N Methoden mehrere replace hintereinander geht nicht ? Java Basics - Anfänger-Themen 2
R String Replace für JUnit Java Basics - Anfänger-Themen 19
M Replace mit fromIndex Java Basics - Anfänger-Themen 6
B Problem mit replace() Java Basics - Anfänger-Themen 4
I replace(char, char) funktioniert nicht Java Basics - Anfänger-Themen 8
0 String split und replace geht nicht Java Basics - Anfänger-Themen 17
A mehrere replace in einem string Java Basics - Anfänger-Themen 3
H replace funktioniert nicht Java Basics - Anfänger-Themen 4
S String filtern mit replace -> Problem Java Basics - Anfänger-Themen 6
T Regulärer Ausruck mit replace Java Basics - Anfänger-Themen 3
M String.replace Java Basics - Anfänger-Themen 2
M replace html string Java Basics - Anfänger-Themen 3
G String.replace Java Basics - Anfänger-Themen 3
J Find and replace Java Basics - Anfänger-Themen 3
D Strings : XY.replace(); ! Java Basics - Anfänger-Themen 6
D String mit replace bearbeiten Java Basics - Anfänger-Themen 2
G string.replace und charset Java Basics - Anfänger-Themen 2
N String.replace brauch mal Hilfe Java Basics - Anfänger-Themen 2
B Programmcode von replace, split, u.s.w. Java Basics - Anfänger-Themen 3
F Schon wieder replace Java Basics - Anfänger-Themen 7
W Replace - geht das auch kürzer? Java Basics - Anfänger-Themen 4
N replace? Java Basics - Anfänger-Themen 5
R String replace nicht verwenden.alternative gesucht Java Basics - Anfänger-Themen 5
P Replace java 1.1 Java Basics - Anfänger-Themen 4
D replace-funktion Java Basics - Anfänger-Themen 2
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben