FileDocCategorySizeDatePackage
FileHole.javaAPI DocExample1516Sat May 18 21:55:44 BST 2002com.ronsoft.books.nio.channels

FileHole

public class FileHole extends Object
Create a file with holes in it. Created April 2002
author
Ron Hitchens (ron@ronsoft.com)
version
$Id: FileHole.java,v 1.2 2002/05/19 04:55:45 ron Exp $

Fields Summary
Constructors Summary
Methods Summary
public static voidmain(java.lang.String[] argv)

		// create a temp file, open for writing and get a FileChannel
		File temp = File.createTempFile ("holy", null);
		RandomAccessFile file = new RandomAccessFile (temp, "rw");
		FileChannel channel = file.getChannel();
		// create a working buffer
		ByteBuffer byteBuffer = ByteBuffer.allocateDirect (100);

		putData (0, byteBuffer, channel);
		putData (5000000, byteBuffer, channel);
		putData (50000, byteBuffer, channel);

		// Size will report the largest position written, but
		// there are two holes in this file.  This file will
		// not consume 5MB on disk (unless the filesystem is
		// extremely brain-damaged).
		System.out.println ("Wrote temp file '" + temp.getPath()
			+ "', size=" + channel.size());

		channel.close();
		file.close();
	
private static voidputData(int position, java.nio.ByteBuffer buffer, java.nio.channels.FileChannel channel)

		String string = "*<-- location " + position;

		buffer.clear();
		buffer.put (string.getBytes ("US-ASCII"));
		buffer.flip();

		channel.position (position);
		channel.write (buffer);