通过FileChannel展示ByteBuffer的使用,使用步骤:
1. 想buffer中写入数据,例如调用channel.read(buffer);
2. 调用flip()切换至读模式;
3. 从buffer读取数据,例如调用buffer.get()
4. 调用clear()或compact()切换至写模式
5. 重复1-4步骤
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class TestByteBuffer {
public static void main(String[] args) {
try (FileChannel channel = new FileInputStream("data.txt").getChannel()) {
ByteBuffer byteBuffer = ByteBuffer.allocate(10);
while (true) {
final int len = channel.read(byteBuffer);
if(len == -1) {
break;
}
byteBuffer.flip();
while (byteBuffer.hasRemaining()) {
final byte b = byteBuffer.get();
System.out.println((char) b);
}
byteBuffer.clear();
}
} catch (IOException e) {
}
}
}