Java I/O How to - Read from a channel with a ByteBuffer








Question

We would like to know how to read from a channel with a ByteBuffer.

Answer

/*  w w w.j a v a 2 s.c  o  m*/
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.ReadableByteChannel;

public class Main {
  public static void main(String[] argv) throws Exception {
    ReadableByteChannel channel = new FileInputStream("infile.dat").getChannel();

    ByteBuffer buf = ByteBuffer.allocateDirect(10);

    int numRead = 0;
    while (numRead >= 0) {
      buf.rewind();

      numRead = channel.read(buf);

      buf.rewind();

      for (int i = 0; i < numRead; i++) {
        byte b = buf.get();
      }
    }
  }
}