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 & (v >> 8)) 14051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & 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 & (v >> 8)) 16151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & 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 & (v >> 24)) 18151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 16)) 18251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >>    8)) 18351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & 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 & (v >> 56)) 20251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 48)) 20351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 40)) 20451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 32)) 20551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 24)) 20651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 16)) 20751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & (v >> 8)) 20851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0xff & 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>\u0001</code> through 31651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>\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>\u0000</code> 32051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or is in the range <code>\u0080</code> 32151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * through <code>\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 & (c >> 6))) 32551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0x80 | (0x3f & c)) 32651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </code></pre> <p> If a character 32751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>c</code> is in the range <code>\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 & (c >> 12))) 33251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0x80 | (0x3f & (c >> 6))) 33351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (byte)(0x80 | (0x3f & 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