标签:修改内容 mod style write nio 替代 off getch 输出
New IO,从java1.4版本引入的新IO,可以替代标准的IO。
代表一个与数据源的开放连接,可以读写数据,这种读写操作都是基于数据块。
channel读写数据的缓冲区,channel将读取的数据存放到Buffer中,将Buffer中的数据写入文件中。
允许一个线程监控多个channel。
一个同时支持读写、随机访问的文件操作对象,相当于一个包含文件全部字节的数组。
IO以字节或者字符为基本单位,NIO以数据块为基本单位。
IO操作阻塞线程,NIO不会阻塞线程。
IO操作的流不存在索引,无法指定操作位置。NIO的数据中存在索引,可以指定操作位置。
IO不支持锁,NIO支持锁,锁的作用是控制对文件的访问。
基于输入与输出流创建对象:
InputStream is=new FileInputStream(String name); FileChannel channel=is.getChannel();
基于RandomAccessFile对象创建对象
RandonAccessFile file=new RandomAccessFile(String name ,"rw"); FileChannel channel=file.getChannel();
2.基于输入流创建的对象只能输入,基于输出流创建的对象只能输出,而基于RandomAccessFile创建的对象既可以输入也可以输出。
3.Channel中的数据存在索引,可以指定读写位置。
NIO为每一个基本数据类型都提供了一个缓冲区,操纵方法相同,下面以ByteBuffer为例进行梳理。
ByteBuffer byteBuffer=ByteBuffer.allocate();//通过分配指定长度的存储单位来创建缓冲区 ByteBuffer byteBuffer=ByteBuffer.wrap(byte[] array);//基于数组创建缓冲区
在系统当中建立文件的映射,如果采用读写模式,那么对该映射的操作会反映到文件中。
由于将文件映射到内存中,资源消耗较大,只有在文件较大的情况下才将文件映射到内存中。
MappedByteBuffer mbb=channel.map(MapMode mode,long offset,long size);
有3中映射方式:
标签:修改内容 mod style write nio 替代 off getch 输出
原文地址:http://www.cnblogs.com/tonghun/p/7081662.html