FileDocCategorySizeDatePackage
ChannelTransfer.javaAPI DocExample1282Mon Apr 29 17:39:40 BST 2002com.ronsoft.books.nio.channels

ChannelTransfer.java

package com.ronsoft.books.nio.channels;

import java.nio.channels.FileChannel;
import java.nio.channels.WritableByteChannel;
import java.nio.channels.Channels;
import java.io.FileInputStream;

/**
 * Test channel transfer.  This is a very simplistic concatenation
 * program.  It takes a list of file names as arguments, opens each
 * in turn and transfers (copies) their content to the given
 * WritableByteChannel (in this case, stdout).
 *
 * Created April 2002
 * @author Ron Hitchens (ron@ronsoft.com)
 * @version $Id: ChannelTransfer.java,v 1.2 2002/04/30 00:39:41 ron Exp $
 */
public class ChannelTransfer 
{
	public static void main (String [] argv)
		throws Exception
	{
		if (argv.length == 0) {
			System.err.println ("Usage: filename ...");
			return;
		}

		catFiles (Channels.newChannel (System.out), argv);
	}

	// Concatenate the content of each of the named files to
	// the given channel.  A very dumb version of 'cat'.
	private static void catFiles (WritableByteChannel target,
		String [] files)
		throws Exception
	{
		for (int i = 0; i < files.length; i++) {
			FileInputStream fis = new FileInputStream (files [i]);
			FileChannel channel = fis.getChannel();

			channel.transferTo (0, channel.size(), target);

			channel.close();
			fis.close();
		}
	}
}