下面的示例演示如何使用FileChannel将某些数据读入Buffer。我们从FileInputStream实例创建一个FileChannel。由于通道将数据读入缓冲区,因此我们需要创建一个ByteBuffer并设置其容量。使用FileChannel.read()方法将数据从通道读取到缓冲区中。
要从缓冲区中读取数据,我们需要先使用Buffer.flip()方法翻转缓冲区。该方法会将缓冲区从写入模式更改为读取模式。读取整个缓冲区后,使用clear()方法调用清除缓冲区。package org.nhooo.example.io;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class FileRead {
public static void main(String[] args) {
String path = "D:/Temp/source.txt";
try (FileInputStream fis = new FileInputStream(path);
FileChannel fileChannel = fis.getChannel()) {
ByteBuffer buffer = ByteBuffer.allocate(64);
int bytesRead = fileChannel.read(buffer);
while (bytesRead != -1) {
buffer.flip();
while (buffer.hasRemaining()) {
System.out.print((char) buffer.get());
}
buffer.clear();
bytesRead = fileChannel.read(buffer);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}