Java NIO学习

本文主要介绍Java NIO学习内容。NIO是jdk1.4加入的新包,目的是让Java程序员实现高速I/O,它将耗时的I/O操作转移到操作系统以提高速度。还对比了原来I/O库与NIO,前者以流处理数据,后者以块处理,块处理速度更快。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java NIO学习

  1. 为什么要使用New IO?
    NIO是jdk1.4加入的新包,NIO的创建目的是为了让java程序员可以实现高速I/O而无需编写自定义的本机代码。NIO将最耗时的I/O操作(即填充和提取缓冲区)转移到操作系统
    ,因而可极大的提高速度。
  2. 流与块的比较
    原来的I/O库与NIO最重要区别是数据打包和传输方式。原来的I/O以流的方式处理数据,而NIO以块的方式处理数据。
  • 面向流的I/O系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。不利的一面是,面向流的I/O通常相当慢。
  • 一个面向块的I/O系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理的数据比按流式的字节处理数据要快得多。但是面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性。

代码示例

import java.nio.ByteBuffer;

public class NIODemo {

    public static void main(String[] args) {
        // 创建一个字节缓冲区,申请内存空间为8个字节
        ByteBuffer buf = ByteBuffer.allocate(8);

        // 缓冲区内部细节:三个关键状态变量
        System.out.println("position = " + buf.position() + "\nlimit = " + buf.limit() + "\ncapacity = " + buf.capacity());
        System.out.println("==========================");

        // 向缓冲区写入数据
        buf.put((byte) 10);
        buf.put((byte) 20);
        buf.put((byte) 30);
        buf.put((byte) 40);

        System.out.println("position = " + buf.position() + "\nlimit = " + buf.limit() + "\ncapacity = " + buf.capacity());
        System.out.println("==========================");

        // 缓冲区的反转
        buf.flip();
        System.out.println("position = " + buf.position() + "\nlimit = " + buf.limit() + "\ncapacity = " + buf.capacity());
        System.out.println("==========================");
    
        // 告知在当前位置和限制之间是否有元素
        if(buf.hasRemaining()) {
            // 返回当前位置与限制之间的元素数
            for(int i = 0;i < buf.remaining(); i++) {
                byte b = buf.get(i);// 从缓冲区取出数据
                System.out.println(b);
            }
        }// if 
    }// main
}

转载于:https://www.cnblogs.com/zxfei/p/10893429.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值