Mega Code Archive

 
Categories / Java / File Input Output
 

Copying a file using channels and buffers

// : c12:ChannelCopy.java // Copying a file using channels and buffers // {Args: ChannelCopy.java test.txt} // {Clean: test.txt} // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class ChannelCopy {   private static final int BSIZE = 1024;   public static void main(String[] args) throws Exception {     if (args.length != 2) {       System.out.println("arguments: sourcefile destfile");       System.exit(1);     }     FileChannel in = new FileInputStream(args[0]).getChannel(), out = new FileOutputStream(         args[1]).getChannel();     ByteBuffer buffer = ByteBuffer.allocate(BSIZE);     while (in.read(buffer) != -1) {       buffer.flip(); // Prepare for writing       out.write(buffer);       buffer.clear(); // Prepare for reading     }   } } ///:~