码迷,mamicode.com
首页 > 其他好文 > 详细

NIO学习:使用Channel、Buffer写入文件

时间:2014-08-18 10:43:53      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   使用   os   io   文件   

NIO的效率要高于标准IO,因为NIO将最耗时的IO操作(填充和提取缓冲区)转移会操作系统。NIO以块为单位传输数据,相比标准IO的以字节为单位效率要高很多。

通道和缓冲时NIO的核心对象,每个NIO操作都要使用到它们。

通道是对流的模拟,但与流不同,通道的传输是双向的,一个通道可以同时用于读和写。

缓冲区是一个容器,它包含将要写入或者刚读出的数据。使用通道进行读写时都要经过缓冲区。

使用NIO写入文件,可以通过文件流获取通道

FileOutputStream outputStream=new FileOutputStream(new File("/root/Desktop/test.txt"));
FileChannel fileChannel=outputStream.getChannel();

下一步是创建缓冲区:

CharBuffer charBuffer=CharBuffer.allocate(1024);
//往缓冲区存放数据
charBuffer.put("hello world");
//重设缓冲区
charBuffer.flip();

使用通道将缓冲区的内容写入文件,通道只能操作byteBuffer,所以需要使用Charset将CharBuffer转为ByteBuffer

Charset charset=Charset.defaultCharset();
ByteBuffer byteBuffer=charset.encode(charBuffer);
fileChannel.write(byteBuffer);

 fileChannel.close();  
 outputStream.close();

 

NIO学习:使用Channel、Buffer写入文件,布布扣,bubuko.com

NIO学习:使用Channel、Buffer写入文件

标签:des   style   blog   color   使用   os   io   文件   

原文地址:http://www.cnblogs.com/DajiangDev/p/3918861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!