zoukankan      html  css  js  c++  java
  • Java NIO学习

    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() + "
    limit = " + buf.limit() + "
    capacity = " + 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() + "
    limit = " + buf.limit() + "
    capacity = " + buf.capacity());
    		System.out.println("==========================");
    
    		// 缓冲区的反转
    		buf.flip();
    		System.out.println("position = " + buf.position() + "
    limit = " + buf.limit() + "
    capacity = " + 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
    }
  • 相关阅读:
    filter过滤器(转载)
    匿名函数 lambda
    偏函数(转载)
    python中的多重继承和Mixin(转载)
    __slot__
    virtual hust 2013.6.21 NEFU 挑战编程----数论 E
    virtual hust 2013.6.21 NEFU 挑战编程----数论 D
    virtual hust 2013.6.21 NEFU 挑战编程----数论 C
    virtual hust 2013.6.21 NEFU 挑战编程----数论 B
    virtual hust 2013.6.21 NEFU 挑战编程----数论 A
  • 原文地址:https://www.cnblogs.com/zxfei/p/10893429.html
Copyright © 2011-2022 走看看