Using AsynchronousFileChannel and CompletionHandler to read a file
import java.nio.ByteBuffer; import java.nio.channels.AsynchronousFileChannel; import java.nio.channels.CompletionHandler; import java.nio.file.Path; import java.nio.file.Paths; public class Test { public static void main(String[] args) throws Exception { Path file = Paths.get("/usr/a/foobar.txt"); AsynchronousFileChannel channel = AsynchronousFileChannel.open(file); ByteBuffer buffer = ByteBuffer.allocate(100_000); channel.read(buffer, 0, buffer, new CompletionHandler<Integer, ByteBuffer>() { public void completed(Integer result, ByteBuffer attachment) { System.out.println("Bytes read [" + result + "]"); } public void failed(Throwable exception, ByteBuffer attachment) { System.out.println(exception.getMessage()); } }); } }