Copying a File Using Channels and Buffers

From Java Example Source Code

Jump to: navigation, search

Contents

[edit] Overview - Copying a File Using Channels and Buffers

This Java example shows how to copy a file using channels and buffers.

[edit] Java Source Code

  • Package: com.bruceeckel
  • File: ChannelCopy.java
package com.bruceeckel;
 
//: 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
	}
    }
}

[edit] What Result You Can Get

Run the program without parameters, you will get:


arguments: sourcefile destfile

[edit] Required External Library for this Java Example

Need nothing.


[edit] How to Run this Java Example Program

We recommend running this Java example program with Eclipse.

For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.

It's fairly easy.

Personal tools