Java I/O How to - Use FileChannel and ByteBuffer to Copy File








Question

We would like to know how to use FileChannel and ByteBuffer to Copy File.

Answer

    /* w w w .  j  ava  2 s  . co  m*/


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class Main {
  public static void main(String[] args) throws Exception {
    String source = "s.txt";
    String destination = "d.txt";

    FileInputStream fis = new FileInputStream(source);
    FileOutputStream fos = new FileOutputStream(destination);

    FileChannel fci = fis.getChannel();
    FileChannel fco = fos.getChannel();

    ByteBuffer buffer = ByteBuffer.allocate(1024);

    while (true) {
      int read = fci.read(buffer);

      if (read == -1)
        break;
      buffer.flip();
      fco.write(buffer);
      buffer.clear();
    }
  }
}