in src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java [153:177]
private static OutputStreamWriter initWriter(final File file, final Object encoding, final boolean append) throws IOException {
Objects.requireNonNull(file, "file");
OutputStream outputStream = null;
final boolean fileExistedAlready = file.exists();
try {
outputStream = FileUtils.newOutputStream(file, append);
if (encoding == null || encoding instanceof Charset) {
return new OutputStreamWriter(outputStream, Charsets.toCharset((Charset) encoding));
}
if (encoding instanceof CharsetEncoder) {
return new OutputStreamWriter(outputStream, (CharsetEncoder) encoding);
}
return new OutputStreamWriter(outputStream, (String) encoding);
} catch (final IOException | RuntimeException ex) {
try {
IOUtils.close(outputStream);
} catch (final IOException e) {
ex.addSuppressed(e);
}
if (!fileExistedAlready) {
FileUtils.deleteQuietly(file);
}
throw ex;
}
}