Verschwindende Sonderzeichen...

Hi,

evtl. mal mit einem Charset versuchen?

Java:
//lesen
FileInputStream tmpFileInputStream = new FileInputStream(file);
InputStreamReader tmpInStrReader = 
  new InputStreamReader(tmpFileInputStream, Charset.forName("UTF8"));
BufferedReader read = new BufferedReader(tmpInStrReader );

//schreiben
BufferedWriter writer = new BufferedWriter(
  new OutputStreamWriter(
    new FileOutputStream(file), Charset.forName("UTF8")));
 
Zuletzt bearbeitet:
Hi.

Aha, du verwendest Property Dateien. Da werden allerdings einige Zeichen beim Laden ersetzt.

Wenn du nicht möchtest, das ein \n als Zeilenterminierungszeichen umgesetzt wird, dann müßtest du einfach \\n in die Property Datei schreiben.

Wie es aussieht schreibst du die Property Dateien selbst (in der cfgWrite() Methode)? Das ist keine gute Idee. Nimm doch einfach die Properties.store() Methode.

Gruß

Problem ist aber, dass die Datei von einem fremden Programm gelesen wird.
Das C++ Programm kann mit \\n nichts anfangen. Dann hat man am Ende ein \ zu viel (es zeigt sich im C++ Spiel im Text).

Kann ich nicht einfach beim einlesen die replace methode anwenden?

String text = prop.getProperty("text").replaceAll("\\\\n","\\\\\\\\n");

So vielleicht?. Das Regex system verwirrt mich ja etwas,...
 
Problem ist aber, dass die Datei von einem fremden Programm gelesen wird.
Das C++ Programm kann mit \\n nichts anfangen. Dann hat man am Ende ein \ zu viel (es zeigt sich im C++ Spiel im Text).
Das Property Format ist ja von Java Seite aus genau spezifiziert. Kannst du nicht einfach das C++ Programm anpassen? (http://www.senzee5.com/2008/02/java-style-properties-files-in-c.html)

Oder missbrauchst du einfach die Property Klasse weil das Dateiformat so ähnlich wie Property Dateien sind?
Kann ich nicht einfach beim einlesen die replace methode anwenden?

String text = prop.getProperty("text").replaceAll("\\\\n","\\\\\\\\n");

So vielleicht?. Das Regex system verwirrt mich ja etwas,...
Warum willst du's dann mit reg. Ausdrücken machen. Du mußt doch nur "\n" durch "\\n" ersetzen. Da reicht doch die String.replace() Methode aus.

Gruß
 
Das Property Format ist ja von Java Seite aus genau spezifiziert. Kannst du nicht einfach das C++ Programm anpassen? (http://www.senzee5.com/2008/02/java-style-properties-files-in-c.html)

Oder missbrauchst du einfach die Property Klasse weil das Dateiformat so ähnlich wie Property Dateien sind?

Warum willst du's dann mit reg. Ausdrücken machen. Du mußt doch nur "\n" durch "\\n" ersetzen. Da reicht doch die String.replace() Methode aus.

Gruß

Ja, ich missbrauche die Properties Klasse. Wieso das Rad neu erfinden?
Die Textdatei hat die Form:

key value
key value
key value

usw.

Das C++ Programm kann ich nicht anpassen, weil es nicht meines ist. Es ist ein Drittanbietertool CMD Tool welches von meinem Java Programm gewrapped wird und somit eine GUI bietet...
 
Zurück