diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 810ebc0c09022a6f5b4a45c84d0dbb1ca82a72c7..1d1df1ecb6feefdf338254066a4eb70d22a11b23 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -908,7 +908,7 @@ public class I2PSnarkServlet extends BasicServlet {
     private void writeHiddenInputs(PrintWriter out, HttpServletRequest req, String action) {
         StringBuilder buf = new StringBuilder(256);
         writeHiddenInputs(buf, req, action);
-        out.write(buf.toString());
+        out.append(buf);
     }
 
     /**
@@ -1995,7 +1995,7 @@ public class I2PSnarkServlet extends BasicServlet {
             buf.append("<a href=\"").append(encodedBaseName)
                .append("/\" title=\"").append(_t("Torrent details"))
                .append("\">");
-            out.write(buf.toString());
+            out.append(buf);
         }
         String icon;
         if (isMultiFile)
@@ -2024,7 +2024,7 @@ public class I2PSnarkServlet extends BasicServlet {
                    .append("\">");
                 toThemeImg(buf, "comment", "", "");
                 buf.append("</a>");
-                out.write(buf.toString());
+                out.append(buf);
             }
         }
 
@@ -2048,7 +2048,7 @@ public class I2PSnarkServlet extends BasicServlet {
             else
                 buf.append(_t("Open file"));
             buf.append("\">");
-            out.write(buf.toString());
+            out.append(buf);
         }
         out.write(DataHelper.escapeHTML(basename));
         if (remaining == 0 || isMultiFile)
@@ -3048,7 +3048,7 @@ public class I2PSnarkServlet extends BasicServlet {
                    "</td></tr>" +
                    "<tr class=\"spacer\"><td colspan=\"7\">&nbsp;</td></tr>\n" +  // spacer
                    "</table></div></div></form>\n");
-        out.write(buf.toString());
+        out.append(buf);
     }
 
     private void writeConfigLink(PrintWriter out) throws IOException {
diff --git a/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java b/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java
index f4ca28dc54026dc6fe0782d9c1bb109680b686b1..93095cd8358b625108b782ffbda8bd30046793fc 100644
--- a/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java
+++ b/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java
@@ -77,7 +77,7 @@ class PersistNews {
                 out = new OutputStreamWriter(new GZIPOutputStream(new SecureFileOutputStream(file)), "UTF-8");
                 out.write(XML_START);
                 XMLParser.toString(buf, entry);
-                out.write(buf.toString());
+                out.append(buf);
                 buf.setLength(0);
             } catch (IOException ioe) {
                 if (log.shouldWarn())
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
index d856756ca9197bbec8f974d593725c21c55c8608..a8181614bde8b48e3f4516409ffad9667b266968 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
@@ -1824,7 +1824,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
         buf.append("<div class=\"debug_container\">");
         toString(buf, _downloaders);
         buf.append("</div>");
-        out.write(buf.toString());
+        out.append(buf);
     }
 
     /** debug */
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java
index 7696a33a8a4a8fd6accce083014c2b086151fdff..0607c1650d798d06a000b346c531ac58869084d6 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/BanlistRenderer.java
@@ -39,7 +39,7 @@ class BanlistRenderer {
         buf.append("<h3 id=\"bannedpeers\">").append(_t("Banned Peers"));
         if (entries.isEmpty()) {
             buf.append("</h3><i>").append(_t("none")).append("</i>");
-            out.write(buf.toString());
+            out.append(buf);
             return;
         } else {
             buf.append(" (").append(entries.size()).append(")</h3>");
@@ -81,7 +81,7 @@ class BanlistRenderer {
             buf.append("</li>\n");
         }
         buf.append("</ul>\n");
-        out.write(buf.toString());
+        out.append(buf);
         out.flush();
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigKeyringHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigKeyringHelper.java
index 3f5fc177b9c0bb2675ec0aa0b6da829dbc6c5033..450ad59344915cac3dffff5f5faec1ea20e8ad77 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigKeyringHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigKeyringHelper.java
@@ -46,7 +46,7 @@ public class ConfigKeyringHelper extends HelperBase {
                        "<input type=\"submit\" name=\"action\" class=\"delete\" value=\"").append(_t("Delete key")).append("\">" +
                        "</td></tr></table>");
         }
-        out.write(buf.toString());
+        out.append(buf);
         out.flush();
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigNavHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigNavHelper.java
index 9cfed79f87be000383f7119bd7735d37b3d9b117..fc9ce8a347e855da9886f825a4aacca0c62f61f7 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigNavHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigNavHelper.java
@@ -92,6 +92,6 @@ public class ConfigNavHelper extends HelperBase {
         }
         if (!span)
             buf.append("</center>");
-        _out.write(buf.toString());
+        _out.append(buf);
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/JobQueueHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/JobQueueHelper.java
index 185fdba80be6c8e1ae41b4066051c42c3a4b2cf2..0806e7419b0bf53c97cb72eb07d9d1aa15c8d240 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/JobQueueHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/JobQueueHelper.java
@@ -92,7 +92,7 @@ public class JobQueueHelper extends HelperBase {
         }
         buf.append("</ol>\n");
         getJobCounts(buf, counter);
-        out.write(buf.toString());
+        out.append(buf);
         buf.setLength(0);
 
         buf.append("<h3 id=\"scheduledjobs\">")
@@ -118,14 +118,14 @@ public class JobQueueHelper extends HelperBase {
         }
         buf.append("</ol></div>\n");
         getJobCounts(buf, counter);
-        out.write(buf.toString());
+        out.append(buf);
         buf.setLength(0);
         
         buf.append("<h3 id=\"totaljobstats\">")
            .append(_t("Total Job Statistics"))
            .append("</h3>\n");
         getJobStats(buf);
-        out.write(buf.toString());
+        out.append(buf);
     }
     
     /** @since 0.9.5 */
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/OldConsoleHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/OldConsoleHelper.java
index 66055a17089ebee9381ef16220499ed5f7347050..da4ea1140c9da155e6e773a7614e8f55bf92b3cb 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/OldConsoleHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/OldConsoleHelper.java
@@ -75,7 +75,7 @@ public class OldConsoleHelper extends HelperBase {
         long free = Runtime.getRuntime().freeMemory()/1024;
         buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br>\n"); 
 
-        out.write(buf.toString());
+        out.append(buf);
         out.flush();
     }
     
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ProfilesHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ProfilesHelper.java
index b2a72dfaa4e9b070a49876514bc5ced66e811cde..632947c7c9e6b1ab7159d0feb9a9c706851f4266 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ProfilesHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ProfilesHelper.java
@@ -119,6 +119,6 @@ public class ProfilesHelper extends HelperBase {
         if (!span)
             buf.append("</center>");
         buf.append("</div>");
-        _out.write(buf.toString());
+        _out.append(buf);
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/StatsGenerator.java
index eceb409924989f0939ad56eefe5eaf100f2c7951..00bdd10ba8945cea34bdf238e90abd726c92617a 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/StatsGenerator.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/StatsGenerator.java
@@ -70,7 +70,7 @@ public class StatsGenerator {
 
         buf.append("<form action=\"\"><b>");
         buf.append(_t("Jump to section")).append(":</b> <select class=\"onchange\">");
-        out.write(buf.toString());
+        out.append(buf);
         buf.setLength(0);
 
         Map<String, SortedSet<String>> unsorted = _context.statManager().getStatsByGroup();
@@ -89,14 +89,14 @@ public class StatsGenerator {
             //    buf.append(stat);
             //    buf.append("</option>\n");
             //}
-            //out.write(buf.toString());
+            //out.append(buf);
             //buf.setLength(0);
         }
         // TODO this is broken for non-js
         buf.append("</select> <input type=\"submit\" value=\"").append(_t("GO")).append("\" />");
         buf.append("</form>");
 
-        out.write(buf.toString());
+        out.append(buf);
         buf.setLength(0);
 
         for (Map.Entry<String, Set<String>> entry : groups.entrySet()) {
@@ -108,7 +108,7 @@ public class StatsGenerator {
             buf.append(translateGroup(group));
             buf.append("</a></h3>");
             buf.append("<ul class=\"statlist\">");
-            out.write(buf.toString());
+            out.append(buf);
             buf.setLength(0);
             for (String stat : stats) {
                 buf.append("<li class=\"statsName\"><b><a name=\"");
@@ -120,7 +120,7 @@ public class StatsGenerator {
                     renderFrequency(stat, buf);
                 else
                     renderRate(stat, buf, showAll);
-                out.write(buf.toString());
+                out.append(buf);
                 buf.setLength(0);
             }
             out.write("</ul><br>\n");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
index 9d2da1f2dbf8f264c1e9614a81f402da55f23dfb..338b3dde4ff7bd24c2a834cd9e5586929c5a08c8 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
@@ -138,7 +138,7 @@ class SummaryBarRenderer {
 
             // Only output section if there's more than the <hr> to print
             if (buf.length() > 5)
-                out.write(buf.toString());
+                out.append(buf);
         }
     }
 
diff --git a/router/java/src/net/i2p/router/crypto/TransientSessionKeyManager.java b/router/java/src/net/i2p/router/crypto/TransientSessionKeyManager.java
index f9b12b8048fc7552d9e0c9f8831e628ccf1ea001..7e24febad032a8e9e7c7e6c1565d30af3ddb3c50 100644
--- a/router/java/src/net/i2p/router/crypto/TransientSessionKeyManager.java
+++ b/router/java/src/net/i2p/router/crypto/TransientSessionKeyManager.java
@@ -807,7 +807,7 @@ public class TransientSessionKeyManager extends SessionKeyManager {
                 buf.append(size).append('/').append(ts.getOriginalSize()).append(" tags remaining</li>");
             }
             buf.append("</ul></td></tr>\n");
-            out.write(buf.toString());
+            out.append(buf);
             buf.setLength(0);
         }
         buf.append("<tr><th colspan=\"2\">Total inbound tags: ").append(total).append(" (")
@@ -841,7 +841,7 @@ public class TransientSessionKeyManager extends SessionKeyManager {
                 buf.append(size).append('/').append(ts.getOriginalSize()).append(" tags remaining; acked? ").append(ts.getAcked()).append("</li>");
             }
             buf.append("</ul></td></tr>\n");
-            out.write(buf.toString());
+            out.append(buf);
             buf.setLength(0);
         }
         buf.append("<tr><th colspan=\"2\">Total outbound tags: ").append(total).append(" (")
@@ -849,7 +849,7 @@ public class TransientSessionKeyManager extends SessionKeyManager {
            .append("; sessions: ").append(outbound.size())
            .append("</th></tr>\n</table>");
 
-        out.write(buf.toString());
+        out.append(buf);
     }
 
     /**
diff --git a/router/java/src/net/i2p/router/crypto/ratchet/RatchetSKM.java b/router/java/src/net/i2p/router/crypto/ratchet/RatchetSKM.java
index e2c6044ef1bbc625171e18df2a2df76eb9fec6c6..d0e74d230acae756939ee292d140feafb45d4ebc 100644
--- a/router/java/src/net/i2p/router/crypto/ratchet/RatchetSKM.java
+++ b/router/java/src/net/i2p/router/crypto/ratchet/RatchetSKM.java
@@ -822,7 +822,7 @@ public class RatchetSKM extends SessionKeyManager implements SessionTagListener
                 }
             }
             buf.append("</ul></td></tr>\n");
-            out.write(buf.toString());
+            out.append(buf);
             buf.setLength(0);
         }
         buf.append("<tr><th colspan=\"2\">Total inbound tags: ").append(total).append(" (")
@@ -876,14 +876,14 @@ public class RatchetSKM extends SessionKeyManager implements SessionTagListener
                 buf.append("</li>");
             }
             buf.append("</ul></td></tr>\n");
-            out.write(buf.toString());
+            out.append(buf);
             buf.setLength(0);
         }
         buf.append("<tr><th colspan=\"2\">Total sets: ").append(totalSets)
            .append("; sessions: ").append(outbound.size())
            .append("</th></tr>\n</table>");
 
-        out.write(buf.toString());
+        out.append(buf);
     }
 
     /**
diff --git a/router/java/src/net/i2p/router/startup/RouterAppManager.java b/router/java/src/net/i2p/router/startup/RouterAppManager.java
index 561a9f1ad1ed50145bbfe0d5b31d977b79c9de0e..d46ddcb5d209c2a4b9997dd67fa3a95a5253a545 100644
--- a/router/java/src/net/i2p/router/startup/RouterAppManager.java
+++ b/router/java/src/net/i2p/router/startup/RouterAppManager.java
@@ -308,7 +308,7 @@ public class RouterAppManager extends ClientAppManagerImpl {
         buf.append("<div class=\"debug_container\">");
         toString2(buf);
         buf.append("</div>");
-        out.write(buf.toString());
+        out.append(buf);
     }
 
     /**
diff --git a/router/java/src/net/i2p/router/sybil/PersistSybil.java b/router/java/src/net/i2p/router/sybil/PersistSybil.java
index 57796db81355e0b7fa0e7d7cda514f676df68963..4a3f4197051b53988e56f5f2cceb65968eb4c1eb 100644
--- a/router/java/src/net/i2p/router/sybil/PersistSybil.java
+++ b/router/java/src/net/i2p/router/sybil/PersistSybil.java
@@ -81,7 +81,7 @@ public class PersistSybil {
                 buf.append(h.toBase64()).append(':');
                 p.toString(buf);
                 buf.append('\n');
-                out.write(buf.toString());
+                out.append(buf);
                 buf.setLength(0);
             }
         } finally {