NIO初步学习

来源:互联网 发布:网络错误403 编辑:程序博客网 时间:2024/09/21 09:21

nio主要有channel、buffer、selector组成,java nio中文件系统是阻塞的,不会用到selsector。

buffer读和写的暂存容器和channel配合使用,四个属性mark,position,limit,capacity。方法包括filp()、clear()、

channel是client与io设备之间读写的交通通道,数据xianfangdaobuffer,再经过channerl写入设备,或者channerl里面读取数据

selecrort提供时间通知机制

下面是代码,将一个大文件通过nio分成多个小文件(中文会出现乱码,用的是字节流)

import java.io.*;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;/** * Created by doshest on 2016/10/11. */public class NioTest {        public static  void main(String args[])throws  IOException{            FileInputStream fis = new FileInputStream("D:\\IdeaProjects\\javaproject\\src\\catalina.out");            FileChannel fc=fis.getChannel();            ByteBuffer buffer= ByteBuffer.allocate(1024*1024*1);            int j=0;            while(true){                buffer.clear();                int flag=fc.read(buffer);                System.out.println(flag);                if(flag==-1){                    break;                }                buffer.flip();                OutputStream os;                FileOutputStream fos=new FileOutputStream((j++)+".out");                FileChannel fcout= fos.getChannel();                fcout.write(buffer);            }        }}


0 0