blob: 0c000f5ad7ecab9cfb041d8f413a69917f7e9872 [file] [log] [blame]
// CHECKSTYLE_OFF: Copyrighted to the Android Open Source Project.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// CHECKSTYLE_ON
package java.io;
/**
* Defines an interface for classes that are able to write big-endian typed data to some
* target. Typically, this data can be read in by a class which implements
* DataInput. Types that can be written include byte, 16-bit short, 32-bit int,
* 32-bit float, 64-bit long, 64-bit double, byte strings, and {@link DataInput
* MUTF-8} encoded strings.
*
* @see DataOutputStream
* @see RandomAccessFile
*/
public interface DataOutput {
/**
* Writes the entire contents of the byte array {@code buffer} to this
* stream.
*
* @param buffer the buffer to write.
* @throws IOException if an I/O error occurs while writing.
*/
void write(byte[] buffer) throws IOException;
/**
* Writes {@code count} bytes from the byte array {@code buffer} starting at
* offset {@code index}.
*
* @param buffer the buffer to write.
* @param offset the index of the first byte in {@code buffer} to write.
* @param count the number of bytes from the {@code buffer} to write.
* @throws IOException if an I/O error occurs while writing.
*/
void write(byte[] buffer, int offset, int count) throws IOException;
/**
* Writes the specified 8-bit byte.
*
* @param oneByte the byte to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readByte()
*/
void write(int oneByte) throws IOException;
/**
* Writes the specified boolean.
*
* @param val the boolean value to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readBoolean()
*/
void writeBoolean(boolean val) throws IOException;
/**
* Writes the specified 8-bit byte.
*
* @param val the byte value to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readByte()
* @see DataInput#readUnsignedByte()
*/
void writeByte(int val) throws IOException;
/**
* Writes the low order 8-bit bytes from the specified string.
*
* @param str the string containing the bytes to write.
* @throws IOException if an I/O error occurs while writing.
*/
void writeBytes(String str) throws IOException;
/**
* Writes the specified 16-bit character in big-endian order. Only the two least significant
* bytes of the integer {@code oneByte} are written.
*
* @param val the character to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readChar()
*/
void writeChar(int val) throws IOException;
/**
* Writes the 16-bit characters contained in {@code str} in big-endian order.
*
* @param str the string that contains the characters to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readChar()
*/
void writeChars(String str) throws IOException;
/**
* Writes the specified 64-bit double in big-endian order. The resulting output is the eight
* bytes returned by {@link Double#doubleToLongBits(double)}.
*
* @param val the double to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readDouble()
*/
void writeDouble(double val) throws IOException;
/**
* Writes the specified 32-bit float in big-endian order. The resulting output is the four bytes
* returned by {@link Float#floatToIntBits(float)}.
*
* @param val the float to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readFloat()
*/
void writeFloat(float val) throws IOException;
/**
* Writes the specified 32-bit int in big-endian order.
*
* @param val the int to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readInt()
*/
void writeInt(int val) throws IOException;
/**
* Writes the specified 64-bit long in big-endian order.
*
* @param val the long to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readLong()
*/
void writeLong(long val) throws IOException;
/**
* Writes the specified 16-bit short in big-endian order. Only the lower two bytes of {@code
* val} are written.
*
* @param val the short to write.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readShort()
* @see DataInput#readUnsignedShort()
*/
void writeShort(int val) throws IOException;
/**
* Writes the specified string encoded in {@link DataInput modified UTF-8}.
*
* @param str the string to write encoded in {@link DataInput modified UTF-8}.
* @throws IOException if an I/O error occurs while writing.
* @see DataInput#readUTF()
*/
void writeUTF(String str) throws IOException;
}