如何使用文件通道通过 Future 读取数据?

How to read Data via a Future using file channels?

我正在使用 RandomFileAccess、FileChannel 和 ByteBuffer 读取文件,如下所示:

RandomAccessFile myFile = new RandomAccessFile("/Users/****/Documents/a.txt", "rw");
FileChannel myInChannel = myFile.getChannel();

ByteBuffer bb = ByteBuffer.allocate(48);

int bytesRead = myInChannel.read(bb);
while (bytesRead != -1) {
     // do something
}
myFile.close();

所有这些代码都运行良好。 但我想知道有什么方法可以使用 Future 读取数据吗?

我试过下面的代码,它运行良好:

try(AsynchronousFileChannel afileChannel = AsynchronousFileChannel.open(Paths.get("/Users/***/Documents/myFile.txt"), StandardOpenOption.READ)) {

        ByteBuffer buffer = ByteBuffer.allocate(1024);
        long position = 0;

        Future<Integer> operation = afileChannel.read(buffer, position);

        while(!operation.isDone()){
            //do something
        }

        buffer.flip();
        byte[] data = new byte[buffer.limit()];
        buffer.get(data);
        System.out.println(new String(data));

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

知道这可以通过 AsynchronousFileChannel 完成,但不能通过 FileChannel 完成。