Read a string from the ByteBuffer. - Java java.nio

Java examples for java.nio:ByteBuffer Read

Description

Read a string from the ByteBuffer.

Demo Code

/* vim:set softtabstop=3 shiftwidth=3 tabstop=3 expandtab tw=72:
    $Id$/*from  w w  w . ja va 2 s. c om*/

    BufferUtil: static methods for reading from a ByteBuffer.
    Copyright (C) 2003  Casey Marshall <rsdio@metastatic.org>

    This file is a part of Jarsync.

    Jarsync is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    Jarsync is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Jarsync; if not, write to the

       Free Software Foundation, Inc.,
       59 Temple Place, Suite 330,
       Boston, MA  02111-1307
       USA  */
//package com.java2s;
import java.nio.BufferOverflowException;
import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;

public class Main {
    /**
     * Read a string from the buffer.
     *
     * @param in        The input buffer.
     * @param maxLength The maximum number of bytes to read, or 0 if not
     *    limited.
     * @return The string.
     * @throws BufferOverflowException If the string length is greater
     *   than <i>maxLength</i>.
     * @throws BufferUnderflowException If there are not enough
     *   bytes available in the buffer.
     */
    public static String getString(ByteBuffer in, int maxLength) {
        int l = in.getInt();
        if (maxLength > 0 && l > maxLength)
            throw new BufferOverflowException();
        byte[] b = new byte[l];
        try {
            in.get(b);
            return new String(b, "ISO-8859-1");
        } catch (BufferUnderflowException bue) {
            in.position(in.position() - 4);
            throw bue;
        } catch (java.io.UnsupportedEncodingException shouldNotHappen) {
        }
        return null;
    }
}

Related Tutorials