001    /*
002     * Copyright (C) 2009 The Guava Authors
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package com.google.common.io;
018    
019    import java.io.DataOutput;
020    import java.io.IOException;
021    
022    /**
023     * An extension of {@code DataOutput} for writing to in-memory byte arrays; its
024     * methods offer identical functionality but do not throw {@link IOException}.
025     *
026     * @author Jayaprabhakar Kadarkarai
027     * @since 1
028     */
029    public interface ByteArrayDataOutput extends DataOutput {
030      @Override void write(int b);
031      @Override void write(byte b[]);
032      @Override void write(byte b[], int off, int len);
033      @Override void writeBoolean(boolean v);
034      @Override void writeByte(int v);
035      @Override void writeShort(int v);
036      @Override void writeChar(int v);
037      @Override void writeInt(int v);
038      @Override void writeLong(long v);
039      @Override void writeFloat(float v);
040      @Override void writeDouble(double v);
041      @Override void writeChars(String s);
042      @Override void writeUTF(String s);
043    
044      /**
045       * @deprecated This method is dangerous as it discards the high byte of
046       * every character. For UTF-8, use {@code write(s.getBytes(Charsets.UTF_8))}.
047       */
048      @Deprecated @Override void writeBytes(String s);
049    
050      /**
051       * Returns the contents that have been written to this instance,
052       * as a byte array.
053       */
054      byte[] toByteArray();
055    }