ByteBufferUtils.java |
/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.media.util; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.ByteBuffer; /** * This class implements methods for creating an input or output stream on a ByteBuffer. * * <p>Obtain or create a ByteBuffer: * <pre>ByteBuffer buf = ByteBuffer.allocate(10);</pre> * * <p>Create an output stream on the ByteBuffer: * <pre>OutputStream os = newOutputStream(buf);</pre> * * <p>Create an input stream on the ByteBuffer: * <pre>InputStream is = newInputStream(buf);</pre> * * @version <tt>$Revision: 1.1 $</tt> * @author <a href="mailto:ricardoarguello@users.sourceforge.net">Ricardo Argüello</a> */ public class ByteBufferUtils { /** * Returns an output stream for a ByteBuffer. * The write() methods use the relative ByteBuffer put() methods. */ public static OutputStream newOutputStream(final ByteBuffer buf) { return new OutputStream() { public synchronized void write(int b) throws IOException { buf.put((byte) b); } public synchronized void write(byte[] bytes, int off, int len) throws IOException { buf.put(bytes, off, len); } }; } /** * Returns an input stream for a ByteBuffer. * The read() methods use the relative ByteBuffer get() methods. */ public static InputStream newInputStream(final ByteBuffer buf) { return new InputStream() { public synchronized int read() throws IOException { if (!buf.hasRemaining()) { return -1; } return buf.get(); } public synchronized int read(byte[] bytes, int off, int len) throws IOException { // Read only what's left len = Math.min(len, buf.remaining()); buf.get(bytes, off, len); return len; } }; } }
ByteBufferUtils.java |