(Minor code cleanup)
diff --git a/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/FileUtil.java b/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/FileUtil.java
index 3ca637b..9cf1fec 100644
--- a/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/FileUtil.java
+++ b/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/FileUtil.java
@@ -26,7 +26,10 @@
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.Reader;
+import java.io.Writer;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.regex.Pattern;
@@ -346,5 +349,8 @@
         return path.length() > 0 && path.charAt(path.length() - 1) == File.separatorChar
                 ? path : path + File.separatorChar;
     }
-    
+
+    public static Writer newFileWriter(File outputFile) throws IOException {
+        return Files.newBufferedWriter(outputFile.toPath(), StandardCharsets.UTF_8);
+    }
 }
diff --git a/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/Transform.java b/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/Transform.java
index d9d3a25..204e492 100644
--- a/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/Transform.java
+++ b/freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/Transform.java
@@ -21,12 +21,9 @@
 import static org.freemarker.docgen.core.DocBook5Constants.*;
 
 import java.io.BufferedReader;
-import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStreamWriter;
 import java.io.StringReader;
 import java.io.Writer;
 import java.nio.charset.Charset;
@@ -1113,14 +1110,10 @@
         {
             logger.info("Generating ToC JSON...");
             Template template = fmConfig.getTemplate(FILE_TOC_JSON_TEMPLATE);
-            try (Writer wr = new BufferedWriter(
-                    new OutputStreamWriter(
-                            new FileOutputStream(
-                                    new File(destDir, FILE_TOC_JSON_OUTPUT)),
-                            UTF_8))) {
+            try (Writer wr = FileUtil.newFileWriter(new File(destDir, FILE_TOC_JSON_OUTPUT))) {
                 try {
                     SimpleHash dataModel = new SimpleHash(fmConfig.getObjectWrapper());
-                        dataModel.put(VAR_JSON_TOC_ROOT, tocNodes.get(0));
+                    dataModel.put(VAR_JSON_TOC_ROOT, tocNodes.get(0));
                     template.process(dataModel, wr, null, NodeModel.wrap(doc));
                 } catch (TemplateException e) {
                     throw new BugException("Failed to generate ToC JSON "
@@ -1133,14 +1126,10 @@
         {
             logger.info("Generating Sitemap XML...");
             Template template = fmConfig.getTemplate(FILE_SITEMAP_XML_TEMPLATE);
-            try (Writer wr = new BufferedWriter(
-                        new OutputStreamWriter(
-                                        new FileOutputStream(
-                                                        new File(destDir, FILE_SITEMAP_XML_OUTPUT)),
-                                        UTF_8))) {
+            try (Writer wr = FileUtil.newFileWriter(new File(destDir, FILE_SITEMAP_XML_OUTPUT))) {
                 try {
                     SimpleHash dataModel = new SimpleHash(fmConfig.getObjectWrapper());
-                            dataModel.put(VAR_JSON_TOC_ROOT, tocNodes.get(0));
+                    dataModel.put(VAR_JSON_TOC_ROOT, tocNodes.get(0));
                     template.process(dataModel, wr, null, NodeModel.wrap(doc));
                 } catch (TemplateException e) {
                     throw new BugException("Failed to generate Sitemap XML"
@@ -1214,11 +1203,7 @@
 
             logger.info("Generating Eclipse ToC...");
             Template template = fmConfig.getTemplate(FILE_ECLIPSE_TOC_TEMPLATE);
-            try (Writer wr = new BufferedWriter(
-                    new OutputStreamWriter(
-                            new FileOutputStream(
-                                    new File(destDir, FILE_ECLIPSE_TOC_OUTPUT)),
-                            UTF_8))) {
+            try (Writer wr = FileUtil.newFileWriter(new File(destDir, FILE_ECLIPSE_TOC_OUTPUT))) {
                 try {
                     SimpleHash dataModel = new SimpleHash(fmConfig.getObjectWrapper());
                     if (eclipseLinkTo != null) {
@@ -2641,16 +2626,11 @@
             throws TemplateException, IOException {
         Template template = fmConfig.getTemplate("page.ftlh");
         File outputFile = new File(destDir, fileName);
-        FileOutputStream fos = new FileOutputStream(outputFile);
-        OutputStreamWriter osw = new OutputStreamWriter(fos, UTF_8);
-        Writer writer = new BufferedWriter(osw, 2048);
-        try {
+        try (Writer writer = FileUtil.newFileWriter(outputFile)) {
             template.process(
                     dataModel,
                     writer, null,
                     NodeModel.wrap(currentFileTOCNode.getElement()));
-        } finally {
-            writer.close();
         }
     }