Sonderzeichen die zweite

Status
Nicht offen für weitere Antworten.

u6g58h8i67roi

Bekanntes Mitglied
Falls es einem schonmal gelungen ist ,wie lässt man java Sonderzeichen der schriftart Arial in eine textdatei schreiben?

die textdatei ist im korrekten format eingestellt, so das diese zeichen mithilfe der zeichentabelle in das dokument eingefügt werden können, und das sie auch nach abspeichern korrekt angezeigt werden

hier mal die klasse mit der ich die datei schreiben lasse :

Code:
package DNA.java;

import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import java.util.Comparator;
import java.util.TreeMap;

public class ListWriter {

    public static void listwriter(int zaehler, String[] nicks, double[] werte) throws IOException {
        File suchtywerte = new File("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Suchtywerte-top-ten.txt");
        
        if (suchtywerte.exists()) {
            suchtywerte.delete();
            System.out.println("Datei wird Gelöscht");
        } else {
            System.out.println("Datei wird neu angelegt");
        }
        FileWriter fw = new FileWriter(suchtywerte.getPath(), true);
        System.out.println("Datei wird neu angelegt");
        System.out.println("Schreibe in Datei");
        
        
        PrintWriter pw = new PrintWriter(fw);
        pw.println("#Suchtywerte _TOP-TEN_#");
        pw.flush();

        String ausgabe = "";
        final Map<String, Double> map = new HashMap<String, Double>();
        int platz = 1;
        for (int feldnummer = 0; feldnummer <= zaehler; feldnummer++) {
            map.put(nicks[feldnummer], werte[feldnummer]);
        }
        Comparator<String> comparator = new Comparator<String>() {

            @Override
            public int compare(String a, String b) {
                return -map.get(a).compareTo(map.get(b));
            }
        };
        Map<String, Double> sortedMap = new TreeMap<String, Double>(comparator);
        sortedMap.putAll(map);

        for (String s : sortedMap.keySet()) {
            try {
                ausgabe = "#" + platz + ".)" + s + " ~~~~~~> " + sortedMap.get(s);
                pw.println(ausgabe);
                pw.flush();
                fw.flush();

            } catch (IOException error) {
                System.out.println("Fehler : " + error.toString()); 
            }
            System.out.println("#" + platz + ".)" + s + " ~~~~~~> " + sortedMap.get(s));
            platz++;
            if (platz == 11) {
                break;
            }
        }
        System.out.println("Schreiben beendet");
        pw.close();
        fw.close();
    }
}

und hier mal die drei zeichen die ich immer in die datei, per hand, reinkopieren muss:

█ (U+2588)
und
▬(U+25AC)
und
►(U+25BA)

die bezeichnungen in klammern gitb mir meine Zeichentabelle von Windoof aus, ich gehe einfach mal davon aus das es die UNI-Codes dafür sind, aber einfügen kann ich die nicht, java erkennt die nicht, es kommen immer nur fragezeichen raus >-<
 

sliwalker

Top Contributor
Hoi,

weiß es selbst nicht, aber geb dir mal einen Hinweis. Aber wenn Du es gelöst hast, schreib auch bitte Deine Lösung hier rein, ja?


Auszug aus Guido Krüger
Handbuch der javaprogrammierung
Version 4.0.3 HTML-Ausgabe:
Kapitel: 49.2.4 Dateizugriffe

Schreiben von Streams

Seit dem JDK 1.1 gibt es die Writer-Klassen, mit denen Character-Streams verarbeitet werden können. Passend zur internen Darstellung des char-Typs in Java verwenden sie 16-Bit breite UNICODE-Zeichen zur Ein- und Ausgabe. Um eine Datei zu erzeugen, kann ein FileWriter-Objekt angelegt werden, und die Zeichen werden mit den write-Methoden geschrieben. Um die Performance zu erhöhen, kann der FileWriter in einen BufferedWriter gekapselt werden, der mit Hilfe eines internen Zeichenpuffers die Anzahl der Schreibzugriffe reduziert. Im Test ergab sich dadurch ein Geschwindigkeitszuwachs um den Faktor drei bis vier gegenüber dem ungepufferten Zugriff. Die von BufferedWriter verwendete Standard-Puffergröße von 8 kByte ist in aller Regel ausreichend, weitere Vergrößerungen bringen keine nennenswerten Beschleunigungen.

Das Dilemma der Writer-Klassen besteht darin, daß die meisten externen Dateien mit 8-Bit-Zeichen arbeiten, statt mit 16-Bit-UNICODE-Zeichen. Ein FileWriter führt also vor der Ausgabe eine Konvertierung der UNICODE-Zeichen durch, um sie im korrekten Format abzuspeichern. Der Aufruf der dazu verwendeten Methoden der Klasse CharToByteConverter aus dem Paket sun.io kostet natürlich Zeit und vermindert die Performance der Writer-Klasse. Wesentlich schneller sind die (älteren) OutputStream-Klassen, die nicht mit Zeichen, sondern mit Bytes arbeiten. Sie führen keine aufwendige Konvertierung durch, sondern geben je Zeichen einfach dessen niederwertige 8 Bit aus. Das spart viel Zeit und führte im Test zu einer nochmals um den Faktor drei bis vier beschleunigten Ausgabe (wenn auch der FileOutputStream in einen BufferedOutputStream eingeschlossen wurde).

Die OutputStream-Klassen sind also immer dann den Writer-Klassen vorzuziehen, wenn entweder sowieso Binärdaten ausgegeben werden sollen oder wenn sichergestellt ist, daß keine UNICODE-Zeichen verwendet werden, die durch das simple Abschneiden der oberen 8 Bit falsch ausgegeben würden. Da der UNICODE-Zeichensatz in den ersten 256 Zeichen zum ISO-8859-1-Zeichensatz kompatibel ist, sollten sich für die meisten europäischen und angelsächsischen Sprachen keine Probleme ergeben, wenn zur Ausgabe von Zeichen die OutputStream-Klassen verwendet werden.

Listing 49.7 zeigt das Erzeugen einer etwa 300 kByte großen Datei, bei der zunächst die Writer- und dann die OutputStream-Klassen verwendet wurden. Im Test lag die Ausführungsgeschwindigkeit der zweiten Variante um etwa eine Zehnerpotenz über der ersten.





So wie ich das sehe, nimmt deine Textdatei standardmäßig eine breite von 8Bit proZeichen. Ich würde es mal probieren in ein Byte zu konverzieren und byteweise rauszuschreiben. Eben nicht als String...

greetz
SLi
 

u6g58h8i67roi

Bekanntes Mitglied
Code:
String b = "█";
FileOutputStream blubb = new FileOutputStream(write(byte[] b));

geht das so?
 

Leroy42

Top Contributor
DNAofDeath hat gesagt.:
wie lässt man java Sonderzeichen der schriftart Arial in eine textdatei schreiben?

Gar nicht!
In Textdateien stehen nur die 7-Bit ASCII-Codes der Zeichen (aufgefüllt auf 8-Bit pro Zeichen).
Schriftarten kennt eine Textdatei überhaupt nicht!
 

u6g58h8i67roi

Bekanntes Mitglied
lol na klasse, aber deine antowrt bring mich immernoch nicht weiter ^^
bitte nur konstruktive beispiele, ich mein es ist ja okay wenn man etwas erklärt warum was nicht so und so geht,

aber ne erklärung WIE es dann geht wäre doch hilfreicher als NUR die erkenntnis das man jetzt schlauer als vorher ist ^^

also lol, weiterhin die frage, WIE bekomme ich dieses dumme zeichen in meine dumme textdatei? ich MUSS das zeichen ausgeben lassen können, sonst hab ich am ende immer den stress das ich das da einfügen muss, und im zeitalter von HD und plasmafernsehern sollte sowas ja wohl möglich sein oder?
 

Leroy42

Top Contributor
Wie bereits geschrieben:

buffer.write(hexWertDesZeichens);

aber ich habe keine Ahnung wie der Hexwert deines Zeichens ist.

Und außerdem hat das alles nichts mit Schriftarten (Arial,...) zu tun!
 

u6g58h8i67roi

Bekanntes Mitglied
ich gebs auf... bye

[edit] Anmerkung :

Bestimmt geht das nicht, oder es hat noch nie einer versucht, und daher weiß auch keiner wie es geht. Schade
 

ARadauer

Top Contributor
Anmerkung :

Bestimmt geht das nicht, oder es hat noch nie einer versucht, und daher weiß auch keiner wie es geht. Schade
freilich gehts:
man muss halt wissen was man raus schreibt.

Code:
try {
			File f = new File("bier.txt");
			f.createNewFile();
			OutputStreamWriter w = new OutputStreamWriter(new FileOutputStream(f), "UTF-8");
			BufferedWriter writer = new BufferedWriter(w);
			writer.write('\u2554');
			writer.write('\u2550');
			writer.write('\u2550');
			writer.write('\u2550');	
			writer.write('\u2550');
			writer.write('\u2557');
			writer.newLine();
			
			writer.write('\u2551');
			writer.write('\u0042');
			writer.write('\u0049');
			writer.write('\u0045');
			writer.write('\u0052');
			writer.write('\u2551');
			writer.newLine();		
			writer.write('\u255A');
			writer.write('\u2550');
			writer.write('\u2550');
			writer.write('\u2550');	
			writer.write('\u2550');
			writer.write('\u255D');
			writer.newLine();
			writer.write('\u2588');
			writer.write('\u2588');
			writer.write('\u2588');
			writer.write('\u2588');
			writer.write('\u2588');
			writer.write('\u2588');
			writer.newLine();
			writer.close();
		}
		catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


hier die unicode tabelle http://unicode.e-workers.de/wgl4.php


probieren!!!!!!!!
 

u6g58h8i67roi

Bekanntes Mitglied
gut okay, warum nicht gleich so ? xD

genau das war es was ich gesucht habe,nur warum kann ich das nciht in die schleife einbauen? der schreibt immer nur eine zeile, und zwar die letzte, die anderen verschwinden immer 0o
 

u6g58h8i67roi

Bekanntes Mitglied
okay okay ich hab mich etwas blöd ausgedrückt

das soll am ende zb so aussehn :

#████Suchtywerte _TOP-TEN_#████
#████1.)musicfan1003 ~~~~~~> 24.3386
#████2.)sandy553 ~~~~~~> 20.3227
#████3.)Josh-d-lux ~~~~~~> 16.3605
#████4.)Leilani08 ~~~~~~> 15.9931
#████5.)super böhser chrissi ~~~~~~> 13.7558
#████6.)thurgon ~~~~~~> 11.2171
#████7.)CupraLady ~~~~~~> 10.0411
#████8.)lenzidaboulousen ~~~~~~> 9.5314
#████9.)Blondchicka1986 ~~~~~~> 9.4273
#████10.)Julia15684 ~~~~~~> 8.2299


aber alles was bei rumkommt ist :

#████Suchtywerte _TOP-TEN_#████
#████10.)Julia15684 ~~~~~~> 8.2299
 

ARadauer

Top Contributor
warums gehts jetzt bei dir nicht, ich vermut mal "gesichtserkennung", ist in der jdk eingebaut. bei manchen gehts bei anderen aber nicht.

oder du hast meinen code gar nicht genau angesehen hast und die datei wird durch f.createNewFile(); immer wieder überschrieben, weil du das klugerweise in deine schleife eingebaut hast.

keine ahnung
 

u6g58h8i67roi

Bekanntes Mitglied
sorry hat sich erledigt xD

hab den stream an der falschen stelle geschlossen -.-*

hier der neue code mit dem es funktioniert =)

Code:
package DNA.java;

import java.io.*;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import java.util.Comparator;
import java.util.TreeMap;

public class ListWriter {

    public static void listwriter(int zaehler, String[] nicks, double[] werte) throws IOException {
        File suchtywerte = new File("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Suchtywerte-top-ten.txt");
        suchtywerte.createNewFile();
        
        final Map<String, Double> map = new HashMap<String, Double>();
        int platz = 1;
        for (int feldnummer = 0; feldnummer <= zaehler; feldnummer++) {
            map.put(nicks[feldnummer], werte[feldnummer]);
        }
        Comparator<String> comparator = new Comparator<String>() {

            @Override
            public int compare(String a, String b) {
                return -map.get(a).compareTo(map.get(b));
            }
        };
        Map<String, Double> sortedMap = new TreeMap<String, Double>(comparator);
        sortedMap.putAll(map);
        OutputStreamWriter w = new OutputStreamWriter(new FileOutputStream(suchtywerte), "UTF-8");
        BufferedWriter writer = new BufferedWriter(w);
        
        writer.write("#\u2588\u2588\u2588\u2588Suchtywerte _TOP-TEN_#\u2588\u2588\u2588\u2588");        
        writer.newLine();
        for (String s : sortedMap.keySet()) {
            try {                
                writer.write("#\u2588\u2588\u2588\u2588" + platz + ".)" + s + " ~~~~~~> " + sortedMap.get(s));
                writer.newLine();                
            } catch (Exception e) {                
                e.printStackTrace();
            }
            System.out.println("#" + platz + ".)" + s + " ~~~~~~> " + sortedMap.get(s));
            platz++;
            if (platz == 11) {
                break;
            }
        }
        System.out.println("Schreiben beendet");
        writer.close();

    }
}

und hier die gewünschte ausgabe :

Code:
#████Suchtywerte _TOP-TEN_#████
#████1.)es muss sein ~~~~~~> 20.1459
#████2.)Torben24HE ~~~~~~> 18.2017
#████3.)Para-Dox1987 ~~~~~~> 15.1633
#████4.)xboyyyx ~~~~~~> 14.0487
#████5.)lonely Kitty ~~~~~~> 13.2899
#████6.)LL 3000 ~~~~~~> 13.1036
#████7.)marrci ~~~~~~> 11.966
#████8.)RoyDanton ~~~~~~> 11.6434
#████9.)Tiggagirly91 ~~~~~~> 11.2512
#████10.)littlevannü ~~~~~~> 10.7461

ach ja und dank dir hab ich grade auch noch etwas über die klasse OutputStreamWriter gelernt =)

doppeltes danke =)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
Semox Umwandlung von Sonderzeichen in HTML-Datei mit Ausgabe Java Basics - Anfänger-Themen 7
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
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
M Char Array mit Sonderzeichen in String umwandeln Java Basics - Anfänger-Themen 21
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
S HTML Sonderzeichen in Unicode wandeln Java Basics - Anfänger-Themen 5
C Sonderzeichen (ä, ö, ü) in JTextArea Java Basics - Anfänger-Themen 9
J Sonderzeichen Java Basics - Anfänger-Themen 2
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
N ArrayList: Das zweite Element wird zur Liste nicht eingefügt nach dem zweiten request. Java Basics - Anfänger-Themen 3
A Akzeptiert das zweite replaceAll nicht Java Basics - Anfänger-Themen 20
H Wie kann ich jedes zweite Array Wert ausgeben lassen?? Java Basics - Anfänger-Themen 6
A Mit javac zweite Datei compilieren ohne Erste erneut zu compilieren? Java Basics - Anfänger-Themen 7
A OOP Arraybefüllung mit for-Schleifen Problem: Umsprung in die zweite Zeile Java Basics - Anfänger-Themen 11
H RandomAccesFile zweite Zeile schreiben Java Basics - Anfänger-Themen 4
R Image laden die Zweite Java Basics - Anfänger-Themen 4
R Erste und zweite Stelle einer Eingabe auslesen Java Basics - Anfänger-Themen 2
F Mehrdimensionales Array zweite Diemnsion später Konstruieren? Wie Java Basics - Anfänger-Themen 2
U zweite Frage: return, wichtig Java Basics - Anfänger-Themen 8
S Nachricht von Console auf Screen wiedergeben die zweite:-) Java Basics - Anfänger-Themen 7
F Zweite Graphics-Methode wird nicht ausgeführt Java Basics - Anfänger-Themen 4
S Zahlenraten die zweite Java Basics - Anfänger-Themen 3
K Eclipse - zweite Konsole? Java Basics - Anfänger-Themen 2
ven000m Rauten "Stern" zeichnen, hälfte habe ich zweite? Java Basics - Anfänger-Themen 2
K Neuronales Netz in Java ... die zweite Java Basics - Anfänger-Themen 3
K Wörter zählen auf Internetseiten... die zweite Java Basics - Anfänger-Themen 4
S Klappe die Zweite für Heute Java Basics - Anfänger-Themen 2
A Fehler beim Lesen von Objekten aus Datei (die zweite) Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben