程序员Java学习笔记Java 杂谈

Java NIO(一):Channel 与 Buffer

2018-03-01  本文已影响108人  聪明的奇瑞

Java NIO 概述

Java IO 与 NIO 区别

Channel(通道)

Buffer(缓冲区)

ByteBuffer buf = ByteBuffer.allocate(48);
CharBuffer buf = CharBuffer.allocate(1024);

Buffer 的 capacity,position 和 limit

示例

可以通过 RandomAccessFile 对象的 getChannel 方法获取 Channel,因为数据无论如何变化终究还是以字节形式存储

try (RandomAccessFile raf = new RandomAccessFile("/Users/linyuan/Documents/字目录.txt", "rw")) {
    // 获取通道 Channel
    FileChannel fileChannel = raf.getChannel();
    // 创建缓冲区 Buffer
    ByteBuffer byteBuffer = ByteBuffer.allocate(52);
    // 将通道的数据读入缓冲区
    int bytesRead = fileChannel.read(byteBuffer);
    while (bytesRead != -1) {
        // 切换缓冲区模式
        byteBuffer.flip();
        // 读取缓冲区字节
        while (byteBuffer.hasRemaining()) {
            System.out.print((char) byteBuffer.get());
        }
        byteBuffer.clear();
        bytesRead = fileChannel.read(byteBuffer);
    }
} catch (Exception e) {
    e.printStackTrace();
}
上一篇下一篇

猜你喜欢

热点阅读