Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

/*
 * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2006.
 *
 * Licensed under the Aduna BSD-style license.
 */
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Main {
    /**
     * Reads at most <tt>maxBytes</tt> bytes from the supplied input stream and
     * returns them as a byte array.
     *
     * @param in The InputStream supplying the bytes.
     * @param maxBytes The maximum number of bytes to read from the input
     * stream.
     * @return A byte array of size <tt>maxBytes</tt> if the input stream can
     * produce that amount of bytes, or a smaller byte containing all available
     * bytes from the stream otherwise.
     */
    public static final byte[] readBytes(InputStream in, int maxBytes) throws IOException {
        byte[] result = new byte[maxBytes];

        int bytesRead = in.read(result);
        int totalBytesRead = bytesRead;

        while (totalBytesRead < maxBytes && bytesRead >= 0) {
            // Read more bytes
            bytesRead = in.read(result, bytesRead, maxBytes - bytesRead);

            if (bytesRead > 0) {
                totalBytesRead += bytesRead;
            }
        }

        if (totalBytesRead < 0) {
            // InputStream at end-of-file
            result = new byte[0];
        } else if (totalBytesRead < maxBytes) {
            // Create smaller byte array
            byte[] tmp = new byte[totalBytesRead];
            System.arraycopy(result, 0, tmp, 0, totalBytesRead);
            result = tmp;
        }

        return result;
    }

}