FileDocCategorySizeDatePackage
BufferFillDrain.javaAPI DocExample1325Sat May 18 21:55:40 BST 2002com.ronsoft.books.nio.buffers

BufferFillDrain.java

package com.ronsoft.books.nio.buffers;

import java.nio.CharBuffer;

/**
 * Buffer fill/drain example.  This code uses the simplest
 * means of filling and draining a buffer: one element at
 * a time.
 *
 * Created May 2002
 * @author Ron Hitchens (ron@ronsoft.com)
 * @version $Id: BufferFillDrain.java,v 1.2 2002/05/19 04:55:41 ron Exp $
 */
public class BufferFillDrain
{
	public static void main (String [] argv)
		throws Exception
	{
		CharBuffer buffer = CharBuffer.allocate (100);

		while (fillBuffer (buffer)) {
			buffer.flip();
			drainBuffer (buffer);
			buffer.clear();
		}
	}

	private static void drainBuffer (CharBuffer buffer)
	{
		while (buffer.hasRemaining()) {
			System.out.print (buffer.get());
		}

		System.out.println ("");
	}

	private static boolean fillBuffer (CharBuffer buffer)
	{
		if (index >= strings.length) {
			return (false);
		}

		String string = strings [index++];

		for (int i = 0; i < string.length(); i++) {
			buffer.put (string.charAt (i));
		}

		return (true);
	}

	private static int index = 0;

	private static String [] strings = {
		"A random string value",
		"The product of an infinite number of monkeys",
		"Hey hey we're the Monkees",
		"Opening act for the Monkees: Jimi Hendrix",
		"'Scuse me while I kiss this fly",  // Sorry Jimi ;-)
		"Help Me!  Help Me!",
	};
}