Java NIO 的简单读写 以及理解

   Java  NIO  引入的新概念


   1.缓冲区:

   2.通道:

   3.选择器:

   "nio放在jvm的直接内存中"

   java  的io  与  nio的区别主要是 “阻塞和非阻塞的区别”。

  java  io:主要是通过   ”连接————线程“实现的。一个链接对应一个线程。

  java nio:主要是通过   ”请求————线程“实现的。利用了选择器的优势。通过选择器进行注册在管道里线程的选择

  简单的例子  :  客车停车请求。{售货员,司机,客户}。

一。利用nio进行 文件的读写。

利用  Paths.get("c:a.txt");  来获取文件路径。  Paths

利用 br=Files.newBufferedReader(p, StandardCharsets.UTF_8); 来获取对应的文件读取缓冲流。  Files

还有 Files.readAllLiens(); 和 Files.readAllBytes();

二。利用NIO{FileChannel}进行文件的读写。

利用  Paths.get("");来获取对应文件。

利用  FileChannel.open(p,StandardOpenOption.READ);来进行返回读写操作。

利用 返回的FileChannel对象调用read()操作。  //这里的read读的是byte类型。ByteBuffer.allocate(1024);开buffer空间

利用 buffer.flip();来进行复位。

Charset c=Charset.forName("GBK");  //都是nio的新方法,用来进行字节码的转换
System.out.println(c.decode(bb));  //用来进行buffer的输出

FileChannel 对象里面的position用来定位到固定位置 ,完后可进行对应的read 或者writer操作。

fc.write(ByteBuffer.wrap("你好".getBytes()));//来进行buffer的写操作。

三。Java7中新增的异步NIO。

AsynchronousFileChannel-------用于文件的io

AsynchronousSocketChannel-------用于套接字io,支持超时。

AsynchronousServerSocketChannel-------用于套接字接受异步连接。

注意:异步NIO于同步NIO的区别除了关键字不一样之外  ,还多了个 Future  关键字 ,是上边关键字的返回类型。

应为是异步的在线程执行期间{可以通过返回类型Future来判断是否执行完成}可以做其他的事情。

Future<Integer> f=af.read(ByteBuffer.allocate(1024*1024),0);

四。回调式异步读取。

利用asychronousFileChannel 方法 对象 调用read ()在read里面的参数中进行匿名内部类CompletionHandler的实现  ,成功后走Completed方法,失败后走failed方法。 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值