每天一个java类之nio包
来源:互联网 发布:农行网银mac版 编辑:程序博客网 时间:2024/05/18 03:43
先看使用,源码之后再说。
nio提高文件的速度,使用的结构更类似于操作系统执行IO的方式:通道和缓冲器
通道是FileChannel、缓冲器是ByteBuffer
FileInputStream、FileOutputStream、RandomAccessFile使用的是字节流
Reader和Writer是字符流,因此不能用于产生通道。
写文件:
FileChannel fc = new FileOutputStream("data.txt").getChannel();
fc.write(ByteBuffer.wrap("some text").getBytes());
fc.close()
写文件
fc = new RandomAccessFile("data.txt" , "rw");
fc.position(fc.size());
fc.write(ByteBuffer.wrap("some more").getBytes());//写之后,信息仍在缓冲区中,如果后续还需要从buffer读数据,则这里,在写之后,加上buffer.clear()
fc.close();
读文件
fc = new FileInputStream("data.txt").getChannel();
ByteBuffer buff = ByteBuffer.allocate(1024);//fc.size()
fc.read(buff);
buff.flip();//这里读之前,必须flip,让缓冲器做好读数据的准备
while(buff.hasRemaining()){
System.out.println((char) buff.get());
}
文件复制demo
FileChannel in = new FileInputStream("in.txt").getChannel();
FileChannel out = new FileInputStream("out.txt").getChannel();
ByteBuffer buff = ByteBuffer.allocate(1024);
while(in.read(buffer) != -1){
buffer.flip();
out.write(buffer);
buffer.clear();
}
- 每天一个java类之nio包
- 每天一个java类之HashMap
- 每天一个java类之Random
- 每天一个Java类之AtomicLong
- 每天一个java类之ConcurrentHashMap
- 【Java.NIO】java.nio包中主要的类
- java nio包主要的类
- java.nio包学习
- java.nio包初探
- 每天一个linux命令之coreutils包: [命令
- 每天一个linux命令之coreutils包: base64命令
- Java NIO之ServerSocketChannel类
- Java NIO之SelectionKey类
- Java NIO 之 NIO 简介
- 每天一个jvm类之String
- java.nio 包的学习
- java的nio包(1)
- 1.每天一个java小程序之猜数字游戏
- The power of TextView(Drawables)
- 中软国际的违法罪行,我们用行动来制裁
- CCEditBox/CCEditBoxImplAndroid
- mysql创建数据库指定编码格式
- 数据结构——算法之(008)( 输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 每天一个java类之nio包
- python获取命令行输出结果
- CCEditBox/CCEditBoxImpl
- 原来是传说中的2038问题
- java NIO vs IO
- IOS开发 两、三个界面相互传值,类似android的onActivityResult(拍照上传、预览图片、点击查看、删除)
- C\C++你不知道的小细节 --- 神奇的宏
- ubuntu12.10安装myeclipse10.7
- PAT A 1059. Prime Factors (25)