code: @Override
      public void writeChars( String str ) {
          CharacterIterator iter = new StringCharacterIterator(str);
          for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
              writeChar(c);
          }
      }
docs: Writes every character in the string <code>s</code>, to the output stream, in order, two bytes per character. If
  <code>s</code> is <code>null</code>, a <code>NullPointerException</code> is thrown. If <code>s.length</code> is zero, then
  no characters are written. Otherwise, the character <code>s[0]</code> is written first, then <code>s[1]</code>, and so on;
  the last character written is <code>s[s.length-1]</code>. For each character, two bytes are actually written, low-order
  byte first, in exactly the manner of the <code>writeChar</code> method.
  
  @param str the string value to be written.