在java各种输入输出流性能由低到高排序:
-RandomAccessFile
-其他各种输入输出流
-带缓存的流:BufferedInputStream,BufferedOutputStream
-内存映射
内存映射是什么?
在操作系统中可以利用虚拟内存技术奖一个文件或者文件的一部分,“映射”到内存中,然后,这个文件就可以当做是内存数组 一样来访问,比传统的文件操作要快得多。
如何使用内存映射:
1、从文件中获得一个通道(channel)
在FileInputStream、FileOutputStream、RandomAccessFile中可以调用getChannel()方法来获得
2、调用FileChannel类的map()方法从通道中获得MappedByteBuffer。可以指定三种模型:
FileChannel.MapMode.READ_ONLY
FileChannel.MapMode.READ_WRITE
FileChannel.MapMode.READ_PRIVATE
3、使用ByteBuffer,Buffer超类的读写方法读写数据。
示例代码如下:
FileInputStream in = new FileInputStream("test.text"); FileChannel channel = in.getChannel(); MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE,0,length); while(buffer.hasRemaining()) { byte b = buffer.get(); }