1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.io;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
21e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes * Defines an interface for classes that are able to read big-endian typed data from some
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * source. Typically, this data has been written by a class which implements
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link DataOutput}. Types that can be read include byte, 16-bit short, 32-bit
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * int, 32-bit float, 64-bit long, 64-bit double, byte strings, and MUTF-8
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * strings.
26f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson *
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <h3>MUTF-8 (Modified UTF-8) Encoding</h3>
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * When encoding strings as UTF, implementations of {@code DataInput} and
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code DataOutput} use a slightly modified form of UTF-8, hereafter referred
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * to as MUTF-8. This form is identical to standard UTF-8, except:
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <ul>
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>Only the one-, two-, and three-byte encodings are used.</li>
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>Code points in the range <code>U+10000</code> &hellip;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <code>U+10ffff</code> are encoded as a surrogate pair, each of which is
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * represented as a three-byte encoded value.</li>
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>The code point <code>U+0000</code> is encoded in two-byte form.</li>
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </ul>
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Please refer to <a href="http://unicode.org">The Unicode Standard</a> for
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * further information about character encoding. MUTF-8 is actually closer to
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the (relatively less well-known) encoding <a
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * href="http://www.unicode.org/reports/tr26/">CESU-8</a> than to UTF-8 per se.
44f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson *
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see DataInputStream
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see RandomAccessFile
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface DataInput {
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reads a boolean.
51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next boolean value.
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeBoolean(boolean)
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract boolean readBoolean() throws IOException;
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reads an 8-bit byte value.
63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next byte value.
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeByte(int)
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract byte readByte() throws IOException;
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
74e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 16-bit character value.
75f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next char value.
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeChar(int)
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract char readChar() throws IOException;
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
86e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 64-bit double value.
87f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next double value.
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeDouble(double)
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract double readDouble() throws IOException;
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
98e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 32-bit float value.
99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next float value.
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeFloat(float)
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract float readFloat() throws IOException;
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1100eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * Equivalent to {@code readFully(dst, 0, dst.length);}.
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1120eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes    public abstract void readFully(byte[] dst) throws IOException;
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
1150eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * Reads {@code byteCount} bytes from this stream and stores them in the byte
1160eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * array {@code dst} starting at {@code offset}. If {@code byteCount} is zero, then this
1170eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * method returns without reading any bytes. Otherwise, this method blocks until
1180eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * {@code byteCount} bytes have been read. If insufficient bytes are available,
1190eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * {@code EOFException} is thrown. If an I/O error occurs, {@code IOException} is
1200eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * thrown. When an exception is thrown, some bytes may have been consumed from the stream
1210eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * and written into the array.
122f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
1230eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * @param dst
1240eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *            the byte array into which the data is read.
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param offset
1260eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *            the offset in {@code dst} at which to store the bytes.
1270eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * @param byteCount
1280eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *            the number of bytes to read.
1290eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * @throws EOFException
1300eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *             if the end of the source stream is reached before enough
1310eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *             bytes have been read.
1320eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * @throws IndexOutOfBoundsException
1330eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *             if {@code offset < 0} or {@code byteCount < 0}, or
1340eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *             {@code offset + byteCount > dst.length}.
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
1360eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *             if a problem occurs while reading from this stream.
1370eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     * @throws NullPointerException
1380eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes     *             if {@code dst} is null.
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
1400eb70e31581a977afa5df3292d1c96e42e548821Elliott Hughes    public abstract void readFully(byte[] dst, int offset, int byteCount) throws IOException;
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
143e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 32-bit integer value.
144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next int value.
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeInt(int)
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract int readInt() throws IOException;
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a string containing the next line of text available from this
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * stream. A line is made of zero or more characters followed by {@code
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * '\n'}, {@code '\r'}, {@code "\r\n"} or the end of the stream. The string
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * does not include the newline sequence.
159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the contents of the line or null if no characters have been read
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         before the end of the stream.
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String readLine() throws IOException;
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
170e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 64-bit long value.
171f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next long value.
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeLong(long)
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract long readLong() throws IOException;
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
182e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 16-bit short value.
183f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next short value.
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeShort(int)
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract short readShort() throws IOException;
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reads an unsigned 8-bit byte value and returns it as an int.
195f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next unsigned byte value.
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeByte(int)
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract int readUnsignedByte() throws IOException;
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
206e0cf017e333b2c529d9bd7d4ad5492f0118d773eElliott Hughes     * Reads a big-endian 16-bit unsigned short value and returns it as an int.
207f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next unsigned short value.
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeShort(int)
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract int readUnsignedShort() throws IOException;
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Reads a string encoded with {@link DataInput modified UTF-8}.
219f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the next string encoded with {@link DataInput modified UTF-8}.
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws EOFException if the end of the input is reached before the read
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         request can be satisfied.
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if an I/O error occurs while reading.
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see DataOutput#writeUTF(java.lang.String)
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract String readUTF() throws IOException;
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Skips {@code count} number of bytes. This method will not throw an
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@link EOFException} if the end of the input is reached before
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code count} bytes where skipped.
233f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param count
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the number of bytes to skip.
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the number of bytes actually skipped.
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IOException
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if a problem occurs during skipping.
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public abstract int skipBytes(int count) throws IOException;
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
242