151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/*
251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Copyright (c) 1995, 2006, 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 Jastrzebski/**
2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The <code>DataOutput</code> interface provides
3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for converting data from any of the Java
3151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * primitive types to a series of bytes and
3251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * writing these bytes to a binary stream.
3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * There is  also a facility for converting
3451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a <code>String</code> into
3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <a href="DataInput.html#modified-utf-8">modified UTF-8</a>
3651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * format and writing the resulting series
3751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of bytes.
3851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>
3951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For all the methods in this interface that
4051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * write bytes, it is generally true that if
4151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a byte cannot be written for any reason,
4251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * an <code>IOException</code> is thrown.
4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
4451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @author  Frank Yellin
4551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see     java.io.DataInput
4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see     java.io.DataOutputStream
4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since   JDK1.0
4851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */
4951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic
5051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiinterface DataOutput {
5151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
5251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes to the output stream the eight
5351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * low-order bits of the argument <code>b</code>.
5451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The 24 high-order  bits of <code>b</code>
5551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * are ignored.
5651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
5751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      b   the byte to be written.
5851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void write(int b) throws IOException;
6151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
6351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes to the output stream all the bytes in array <code>b</code>.
6451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * If <code>b</code> is <code>null</code>,
6551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * a <code>NullPointerException</code> is thrown.
6651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * If <code>b.length</code> is zero, then
6751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * no bytes are written. Otherwise, the byte
6851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>b[0]</code> is written first, then
6951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>b[1]</code>, and so on; the last byte
7051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * written is <code>b[b.length-1]</code>.
7151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
7251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      b   the data.
7351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
7451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void write(byte b[]) throws IOException;
7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
7751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes <code>len</code> bytes from array
7951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>b</code>, in order,  to
8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * the output stream.  If <code>b</code>
8151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is <code>null</code>, a <code>NullPointerException</code>
8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is thrown.  If <code>off</code> is negative,
8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * or <code>len</code> is negative, or <code>off+len</code>
8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is greater than the length of the array
8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>b</code>, then an <code>IndexOutOfBoundsException</code>
8651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is thrown.  If <code>len</code> is zero,
8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * then no bytes are written. Otherwise, the
8851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * byte <code>b[off]</code> is written first,
8951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * then <code>b[off+1]</code>, and so on; the
9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * last byte written is <code>b[off+len-1]</code>.
9151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
9251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      b     the data.
9351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      off   the start offset in the data.
9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      len   the number of bytes to write.
9551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
9651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void write(byte b[], int off, int len) throws IOException;
9851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
9951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
10051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes a <code>boolean</code> value to this output stream.
10151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * If the argument <code>v</code>
10251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is <code>true</code>, the value <code>(byte)1</code>
10351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is written; if <code>v</code> is <code>false</code>,
10451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * the  value <code>(byte)0</code> is written.
10551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The byte written by this method may
10651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * be read by the <code>readBoolean</code>
10751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method of interface <code>DataInput</code>,
10851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * which will then return a <code>boolean</code>
10951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * equal to <code>v</code>.
11051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
11151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the boolean to be written.
11251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
11351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
11451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeBoolean(boolean v) throws IOException;
11551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
11651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
11751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes to the output stream the eight low-
11851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * order bits of the argument <code>v</code>.
11951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The 24 high-order bits of <code>v</code>
12051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * are ignored. (This means  that <code>writeByte</code>
12151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * does exactly the same thing as <code>write</code>
12251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * for an integer argument.) The byte written
12351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * by this method may be read by the <code>readByte</code>
12451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method of interface <code>DataInput</code>,
12551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * which will then return a <code>byte</code>
12651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * equal to <code>(byte)v</code>.
12751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
12851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the byte value to be written.
12951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
13051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
13151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeByte(int v) throws IOException;
13251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
13351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
13451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes two bytes to the output
13551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * stream to represent the value of the argument.
13651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The byte values to be written, in the  order
13751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * shown, are: <p>
13851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <pre><code>
13951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 8))
14051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; v)
14151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * </code> </pre> <p>
14251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The bytes written by this method may be
14351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * read by the <code>readShort</code> method
14451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * of interface <code>DataInput</code> , which
14551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * will then return a <code>short</code> equal
14651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * to <code>(short)v</code>.
14751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
14851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the <code>short</code> value to be written.
14951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
15051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
15151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeShort(int v) throws IOException;
15251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
15351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
15451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes a <code>char</code> value, which
15551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is comprised of two bytes, to the
15651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * output stream.
15751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The byte values to be written, in the  order
15851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * shown, are:
15951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <p><pre><code>
16051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 8))
16151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; v)
16251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * </code></pre><p>
16351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The bytes written by this method may be
16451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * read by the <code>readChar</code> method
16551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * of interface <code>DataInput</code> , which
16651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * will then return a <code>char</code> equal
16751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * to <code>(char)v</code>.
16851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
16951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the <code>char</code> value to be written.
17051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
17151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
17251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeChar(int v) throws IOException;
17351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
17451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
17551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes an <code>int</code> value, which is
17651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * comprised of four bytes, to the output stream.
17751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The byte values to be written, in the  order
17851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * shown, are:
17951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <p><pre><code>
18051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 24))
18151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 16))
18251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; &#32; &#32;8))
18351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; v)
18451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * </code></pre><p>
18551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The bytes written by this method may be read
18651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * by the <code>readInt</code> method of interface
18751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>DataInput</code> , which will then
18851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * return an <code>int</code> equal to <code>v</code>.
18951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
19051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the <code>int</code> value to be written.
19151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
19251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
19351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeInt(int v) throws IOException;
19451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
19551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
19651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes a <code>long</code> value, which is
19751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * comprised of eight bytes, to the output stream.
19851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The byte values to be written, in the  order
19951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * shown, are:
20051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <p><pre><code>
20151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 56))
20251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 48))
20351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 40))
20451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 32))
20551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 24))
20651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt; 16))
20751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; (v &gt;&gt;  8))
20851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xff &amp; v)
20951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * </code></pre><p>
21051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * The bytes written by this method may be
21151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * read by the <code>readLong</code> method
21251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * of interface <code>DataInput</code> , which
21351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * will then return a <code>long</code> equal
21451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * to <code>v</code>.
21551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
21651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the <code>long</code> value to be written.
21751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
21851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
21951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeLong(long v) throws IOException;
22051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
22151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
22251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes a <code>float</code> value,
22351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * which is comprised of four bytes, to the output stream.
22451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * It does this as if it first converts this
22551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>float</code> value to an <code>int</code>
22651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * in exactly the manner of the <code>Float.floatToIntBits</code>
22751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method  and then writes the <code>int</code>
22851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * value in exactly the manner of the  <code>writeInt</code>
22951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method.  The bytes written by this method
23051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * may be read by the <code>readFloat</code>
23151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method of interface <code>DataInput</code>,
23251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * which will then return a <code>float</code>
23351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * equal to <code>v</code>.
23451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
23551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the <code>float</code> value to be written.
23651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
23751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
23851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeFloat(float v) throws IOException;
23951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
24051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
24151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes a <code>double</code> value,
24251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * which is comprised of eight bytes, to the output stream.
24351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * It does this as if it first converts this
24451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>double</code> value to a <code>long</code>
24551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * in exactly the manner of the <code>Double.doubleToLongBits</code>
24651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method  and then writes the <code>long</code>
24751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * value in exactly the manner of the  <code>writeLong</code>
24851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method. The bytes written by this method
24951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * may be read by the <code>readDouble</code>
25051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * method of interface <code>DataInput</code>,
25151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * which will then return a <code>double</code>
25251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * equal to <code>v</code>.
25351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
25451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      v   the <code>double</code> value to be written.
25551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
25651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
25751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeDouble(double v) throws IOException;
25851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
25951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
26051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes a string to the output stream.
26151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * For every character in the string
26251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>s</code>,  taken in order, one byte
26351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is written to the output stream.  If
26451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>s</code> is <code>null</code>, a <code>NullPointerException</code>
26551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is thrown.<p>  If <code>s.length</code>
26651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is zero, then no bytes are written. Otherwise,
26751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * the character <code>s[0]</code> is written
26851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * first, then <code>s[1]</code>, and so on;
26951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * the last character written is <code>s[s.length-1]</code>.
27051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * For each character, one byte is written,
27151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * the low-order byte, in exactly the manner
27251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * of the <code>writeByte</code> method . The
27351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * high-order eight bits of each character
27451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * in the string are ignored.
27551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
27651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      s   the string of bytes to be written.
27751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
27851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
27951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeBytes(String s) throws IOException;
28051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
28151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
28251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes every character in the string <code>s</code>,
28351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * to the output stream, in order,
28451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * two bytes per character. If <code>s</code>
28551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is <code>null</code>, a <code>NullPointerException</code>
28651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is thrown.  If <code>s.length</code>
28751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is zero, then no characters are written.
28851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Otherwise, the character <code>s[0]</code>
28951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is written first, then <code>s[1]</code>,
29051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * and so on; the last character written is
29151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>s[s.length-1]</code>. For each character,
29251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * two bytes are actually written, high-order
29351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * byte first, in exactly the manner of the
29451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>writeChar</code> method.
29551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
29651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      s   the string value to be written.
29751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
29851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
29951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeChars(String s) throws IOException;
30051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
30151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
30251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Writes two bytes of length information
30351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * to the output stream, followed
30451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * by the
30551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <a href="DataInput.html#modified-utf-8">modified UTF-8</a>
30651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * representation
30751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * of  every character in the string <code>s</code>.
30851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * If <code>s</code> is <code>null</code>,
30951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * a <code>NullPointerException</code> is thrown.
31051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Each character in the string <code>s</code>
31151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is converted to a group of one, two, or
31251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * three bytes, depending on the value of the
31351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * character.<p>
31451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * If a character <code>c</code>
31551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is in the range <code>&#92;u0001</code> through
31651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>&#92;u007f</code>, it is represented
31751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * by one byte:<p>
31851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <pre>(byte)c </pre>  <p>
31951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * If a character <code>c</code> is <code>&#92;u0000</code>
32051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * or is in the range <code>&#92;u0080</code>
32151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * through <code>&#92;u07ff</code>, then it is
32251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * represented by two bytes, to be written
32351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * in the order shown:<p> <pre><code>
32451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xc0 | (0x1f &amp; (c &gt;&gt; 6)))
32551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0x80 | (0x3f &amp; c))
32651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *  </code></pre>  <p> If a character
32751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>c</code> is in the range <code>&#92;u0800</code>
32851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * through <code>uffff</code>, then it is
32951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * represented by three bytes, to be written
33051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * in the order shown:<p> <pre><code>
33151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0xe0 | (0x0f &amp; (c &gt;&gt; 12)))
33251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0x80 | (0x3f &amp; (c &gt;&gt;  6)))
33351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (byte)(0x80 | (0x3f &amp; c))
33451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *  </code></pre>  <p> First,
33551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * the total number of bytes needed to represent
33651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * all the characters of <code>s</code> is
33751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * calculated. If this number is larger than
33851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>65535</code>, then a <code>UTFDataFormatException</code>
33951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * is thrown. Otherwise, this length is written
34051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * to the output stream in exactly the manner
34151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * of the <code>writeShort</code> method;
34251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * after this, the one-, two-, or three-byte
34351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * representation of each character in the
34451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * string <code>s</code> is written.<p>  The
34551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * bytes written by this method may be read
34651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * by the <code>readUTF</code> method of interface
34751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <code>DataInput</code> , which will then
34851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * return a <code>String</code> equal to <code>s</code>.
34951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
35051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      s   the string value to be written.
35151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IOException  if an I/O error occurs.
35251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
35351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    void writeUTF(String s) throws IOException;
35451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski}
355