151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/* 26c0b680f9b6737327f7305dc266e302e594bf70bPrzemyslaw Szczepaniak * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. 351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is free software; you can redistribute it and/or modify it 651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * under the terms of the GNU General Public License version 2 only, as 751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * published by the Free Software Foundation. Oracle designates this 851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * particular file as subject to the "Classpath" exception as provided 951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by Oracle in the LICENSE file that accompanied this code. 1051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is distributed in the hope that it will be useful, but WITHOUT 1251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * version 2 for more details (a copy is included in the LICENSE file that 1551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * accompanied this code). 1651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * You should have received a copy of the GNU General Public License version 1851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2 along with this work; if not, write to the Free Software Foundation, 1951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or visit www.oracle.com if you need additional information or have any 2351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * questions. 2451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 2551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipackage java.io; 2751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiimport java.nio.charset.Charset; 2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiimport java.nio.charset.CharsetEncoder; 3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiimport sun.nio.cs.StreamEncoder; 3151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/** 3451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * An OutputStreamWriter is a bridge from character streams to byte streams: 3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Characters written to it are encoded into bytes using a specified {@link 366c0b680f9b6737327f7305dc266e302e594bf70bPrzemyslaw Szczepaniak * java.nio.charset.Charset charset}. The charset that it uses 3751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * may be specified by name or may be given explicitly, or the platform's 3851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * default charset may be accepted. 3951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 4051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> Each invocation of a write() method causes the encoding converter to be 4151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * invoked on the given character(s). The resulting bytes are accumulated in a 4251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * buffer before being written to the underlying output stream. The size of 4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this buffer may be specified, but by default it is large enough for most 4451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * purposes. Note that the characters passed to the write() methods are not 4551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * buffered. 4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> For top efficiency, consider wrapping an OutputStreamWriter within a 4851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * BufferedWriter so as to avoid frequent converter invocations. For example: 4951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 5051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <pre> 5151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Writer out 5251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * = new BufferedWriter(new OutputStreamWriter(System.out)); 5351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </pre> 5451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 5551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> A <i>surrogate pair</i> is a character represented by a sequence of two 5651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <tt>char</tt> values: A <i>high</i> surrogate in the range '\uD800' to 5751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * '\uDBFF' followed by a <i>low</i> surrogate in the range '\uDC00' to 5851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * '\uDFFF'. 5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> A <i>malformed surrogate element</i> is a high surrogate that is not 6151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * followed by a low surrogate or a low surrogate that is not preceded by a 6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * high surrogate. 6351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 6451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> This class always replaces malformed surrogate elements and unmappable 6551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * character sequences with the charset's default <i>substitution sequence</i>. 6651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The {@linkplain java.nio.charset.CharsetEncoder} class should be used when more 6751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * control over the encoding process is required. 6851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 6951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see BufferedWriter 7051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see OutputStream 7151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see java.nio.charset.Charset 7251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 7351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @author Mark Reinhold 7451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since JDK1.1 7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic class OutputStreamWriter extends Writer { 7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski private final StreamEncoder se; 8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 8151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Creates an OutputStreamWriter that uses the named charset. 8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param out 8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * An OutputStream 8651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param charsetName 8851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The name of a supported 896c0b680f9b6737327f7305dc266e302e594bf70bPrzemyslaw Szczepaniak * {@link java.nio.charset.Charset charset} 9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 9151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception UnsupportedEncodingException 9251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * If the named encoding is not supported 9351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public OutputStreamWriter(OutputStream out, String charsetName) 9551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws UnsupportedEncodingException 9651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski { 9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super(out); 9851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski if (charsetName == null) 9951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throw new NullPointerException("charsetName"); 10051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se = StreamEncoder.forOutputStreamWriter(out, this, charsetName); 10151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 10251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 10351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 10451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Creates an OutputStreamWriter that uses the default character encoding. 10551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 10651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param out An OutputStream 10751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 10851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public OutputStreamWriter(OutputStream out) { 10951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super(out); 11051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski try { 11151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se = StreamEncoder.forOutputStreamWriter(out, this, (String)null); 11251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } catch (UnsupportedEncodingException e) { 11351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throw new Error(e); 11451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 11551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 11651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 11751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 1186c0b680f9b6737327f7305dc266e302e594bf70bPrzemyslaw Szczepaniak * Creates an OutputStreamWriter that uses the given charset. 11951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 12051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param out 12151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * An OutputStream 12251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 12351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param cs 12451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A charset 12551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 12651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 12751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @spec JSR-51 12851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 12951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public OutputStreamWriter(OutputStream out, Charset cs) { 13051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super(out); 13151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski if (cs == null) 13251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throw new NullPointerException("charset"); 13351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se = StreamEncoder.forOutputStreamWriter(out, this, cs); 13451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 13551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 13651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 1376c0b680f9b6737327f7305dc266e302e594bf70bPrzemyslaw Szczepaniak * Creates an OutputStreamWriter that uses the given charset encoder. 13851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 13951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param out 14051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * An OutputStream 14151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 14251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param enc 14351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A charset encoder 14451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 14551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 14651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @spec JSR-51 14751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 14851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public OutputStreamWriter(OutputStream out, CharsetEncoder enc) { 14951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super(out); 15051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski if (enc == null) 15151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throw new NullPointerException("charset encoder"); 15251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se = StreamEncoder.forOutputStreamWriter(out, this, enc); 15351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 15451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 15551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 15651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Returns the name of the character encoding being used by this stream. 15751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 15851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> If the encoding has an historical name then that name is returned; 15951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * otherwise the encoding's canonical name is returned. 16051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 16151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> If this instance was created with the {@link 16251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * #OutputStreamWriter(OutputStream, String)} constructor then the returned 16351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name, being unique for the encoding, may differ from the name passed to 16451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the constructor. This method may return <tt>null</tt> if the stream has 16551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * been closed. </p> 16651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 16751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return The historical name of this encoding, or possibly 16851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> if the stream has been closed 16951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 17051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see java.nio.charset.Charset 17151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 17251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @revised 1.4 17351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @spec JSR-51 17451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 17551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public String getEncoding() { 17651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski return se.getEncoding(); 17751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 17851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 17951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 18051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Flushes the output buffer to the underlying byte stream, without flushing 18151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the byte stream itself. This method is non-private only so that it may 18251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * be invoked by PrintStream. 18351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 18451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski void flushBuffer() throws IOException { 18551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se.flushBuffer(); 18651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 18751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 18851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 18951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Writes a single character. 19051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 19151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception IOException If an I/O error occurs 19251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 19351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void write(int c) throws IOException { 19451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se.write(c); 19551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 19651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 19751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 19851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Writes a portion of an array of characters. 19951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 20051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param cbuf Buffer of characters 20151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param off Offset from which to start writing characters 20251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param len Number of characters to write 20351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 20451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception IOException If an I/O error occurs 20551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 20651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void write(char cbuf[], int off, int len) throws IOException { 20751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se.write(cbuf, off, len); 20851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 20951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 21051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 21151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Writes a portion of a string. 21251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 21351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param str A String 21451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param off Offset from which to start writing characters 21551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param len Number of characters to write 21651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 21751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception IOException If an I/O error occurs 21851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 21951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void write(String str, int off, int len) throws IOException { 22051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se.write(str, off, len); 22151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 22251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 22351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 22451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Flushes the stream. 22551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 22651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception IOException If an I/O error occurs 22751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 22851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void flush() throws IOException { 22951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se.flush(); 23051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 23151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 23251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void close() throws IOException { 23351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski se.close(); 23451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 23551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski} 236