NIO初步学习

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值