Use FileChannel and ByteBuffer to Copy File : ByteBuffer « File « Java Tutorial






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();
    }
  }
}








11.42.ByteBuffer
11.42.1.A ByteBuffer is a fixed-capacity buffer that holds byte values.
11.42.2.Create a ByteBuffer using a byte array
11.42.3.Create a non-direct ByteBuffer with a 10 byte capacity
11.42.4.Create a direct (memory-mapped) ByteBuffer with a 10 byte capacity.
11.42.5.Allocation automatically zeroes the ByteBuffer
11.42.6.Store and read a char array
11.42.7.Store and read a short
11.42.8.Rewind a ByteBuffer
11.42.9.Store and read an int
11.42.10.Store and read a long
11.42.11.Store and read a float
11.42.12.Store and read a double
11.42.13.ByteBuffer.hasRemaining()
11.42.14.Use while loop to read a ByteBuffer
11.42.15.Retrieve all bytes in the buffer
11.42.16.Retrieve bytes between the position and limit
11.42.17.Converting text to and from ByteBuffers with UTF-16BE
11.42.18.Converting text to and from ByteBuffers
11.42.19.Get the ByteBuffer's capacity
11.42.20.Use the absolute get().
11.42.21.Set the position
11.42.22.Use the relative get()
11.42.23.Get remaining byte count in a ByteBuffer
11.42.24.Set the limit for ByteBuffer
11.42.25.This convenience method sets the position to 0
11.42.26.Converting Between a ByteBuffer an a Byte Array
11.42.27.Putting Bytes into a ByteBuffer
11.42.28.Endian differences and data storage
11.42.29.Use FileChannel and ByteBuffer to Copy File
11.42.30.Read from a channel with a ByteBuffer
11.42.31.Test views of long elements in a ByteBuffer