2017-08-10 20 views
1

Für ein Projekt muss ich an eine Textdatei mit UTF-8-Codierung anhängen. Bei meinen Recherchen fand ich zwei Möglichkeiten:Anhängen an Datei in utf8

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(new FileOutputStream("file.txt), "UTF-8") 
) 

Dies wird in UTF-8, um meine Datei schreiben, aber es wird sie überschrieben werden soll, anstatt sie anhängen, wenn sie bereits vorhanden sind.

Dann fand ich den Code an eine vorhandene Datei mit einem Parameter in den FileWriter apend, aber das wird nicht UTF-8 explizit verwenden, anstatt die eingestellte Standard-Systemzeichen zu verwenden:

BufferedWriter out = new BufferedWriter(new FileWriter("myfile.txt", true)) 

ich jetzt Brauchen Sie die Möglichkeit, sowohl die Codierung als auch das Anhängen an eine Datei zu definieren. Verlassen Sie sich einfach auf die Systemcodierung oder ändern Sie dies ist keine Option.

Irgendwelche Gedanken?

+0

sehen diese Antwort: https://stackoverflow.com/questions/30307382/how-to-append-text-to -file-in-java-8-using-specified-charset – diginoise

Antwort

3

Sie haben vergessen, die true Paramter zum FileOutputStream Konstruktor hinzuzufügen:

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(
     new FileOutputStream("file.txt", true), // true to append 
     StandardCharsets.UTF_8     // Set encoding 
    ) 
); 
+0

duh! Anscheinend habe ich die Option verpasst, es auf den 'FileOutputStream' zu setzen, ich habe nur die 'FileWriter'-Option angeschaut. –

0
try { 
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("myFile.txt", true), "UTF-8")); 
    out.write("Hello World"); 
    out.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
}