Ich schreibe einen Strom von Zeichen in eine Textdatei in einer Single-Byte-Codierung. Ich möchte in der Lage sein, nicht zutreffende Zeichen im Stream zu finden, um eine Fallback-Aktion auszuführen (was auf hoher Ebene ist und ungültige Zeichen nicht löscht oder ersetzt).Detect nicht-Zeichen im Stream
Ich verwende OutputStreamWriter jetzt, aber wie kann ich sicher sein, dass es auf Mapping-Fehler werfen wird?
private void convert(Iterable<String> lines, OutputStream os) throws CoreException, IOException {
String lineDelimiter = ResourcesUtils.getLineDelimiter(file.getProject());
Charset charset = Charset.forName(file.getCharset());
CharsetEncoder encoder = charset.newEncoder();
encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
try (OutputStreamWriter writer = new OutputStreamWriter(os, encoder)) {
Joiner.on(lineDelimiter).appendTo(writer, lines);
}
}
Dieser Code führt auf Probe ungültige Eingabe, aber es ist unklar, ob es so auf andere Implementierungen von Output oder Eingaben zu tun ist garantiert.
Was ist eine zuverlässige Möglichkeit, eine Ausnahme beim Konvertieren eines Streams mit nicht-kompatiblen Zeichen zu erhalten?
Haben Sie es versucht? Was ist passiert, wenn Sie ungültige Daten eingegeben haben? –
Es funktionierte gut mit mir - nicht mit ** Guava Joiner ** obwohl. Vielleicht ist das der Schuldige. –