首页 > 代码库 > NIO学习:使用Channel、Buffer写入文件
NIO学习:使用Channel、Buffer写入文件
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();
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。