C
Centurio
Gast
Servus Leute, ich habe ein kleines Problem beim schreiben in Dateien.
Und zwar möchte ich gern UTF-16 Daten in ein File schreiben, dies sollte so FUnktionieren indem ich ein FileOutputStream auf eine Datei anwende, darauf wiederum ein OutputStreamWriter und darauf, um es Zeilenweise zu speichern einen BufferedWriter lege.
Fürs einlesen klappt das ziemlich gut sowohl in UTF-8 als auch in UTF-16 Format gleiches Schema natürlich mit FileInputStream -> InputStreamReader -> BufferedReader.
Das Problem ist, dass bei unten stehendem Code grundsätzlich immer dieser Fehler kommt:
Das File wird tatsächlich gelöscht falls es vorhanden ist auch wieder neu erstellt danach klappt alles bis auf das schliessen des OutputStreamWriters bzw. des BufferedWriters.
achja: getDatei() gibt ein File zurück
und this.type ist im fehlerfalle "UTF-16"
Vielen Dank für die Antworten im Vorraus
Mfg Centurio
Und zwar möchte ich gern UTF-16 Daten in ein File schreiben, dies sollte so FUnktionieren indem ich ein FileOutputStream auf eine Datei anwende, darauf wiederum ein OutputStreamWriter und darauf, um es Zeilenweise zu speichern einen BufferedWriter lege.
Fürs einlesen klappt das ziemlich gut sowohl in UTF-8 als auch in UTF-16 Format gleiches Schema natürlich mit FileInputStream -> InputStreamReader -> BufferedReader.
Das Problem ist, dass bei unten stehendem Code grundsätzlich immer dieser Fehler kommt:
Code:
java.io.IOException: Write error
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
at sun.nio.cs.StreamEncoder$CharsetSE.implClose(StreamEncoder.java:427)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:160)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:222)
Das File wird tatsächlich gelöscht falls es vorhanden ist auch wieder neu erstellt danach klappt alles bis auf das schliessen des OutputStreamWriters bzw. des BufferedWriters.
achja: getDatei() gibt ein File zurück
und this.type ist im fehlerfalle "UTF-16"
Code:
public boolean saveToFile(List<String> zeilen) {
try {
this.getDatei().delete();
this.getDatei().createNewFile();
FileOutputStream fos = new FileOutputStream(this.getDatei());
OutputStreamWriter osw = new OutputStreamWriter(fos, this.type);
BufferedWriter bw = new BufferedWriter(osw);
for (int i= 0; i<zeilen.size(); i++) {
bw.write(zeilen.get(i));
bw.newLine();
}
fos.close();
osw.close();
bw.close();
return true;
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
}
Vielen Dank für die Antworten im Vorraus
Mfg Centurio