java之内存映射文件

2016-04-04  本文已影响156人  蜗牛不要壳

大多数操作系统都可以利用虚拟内存实现来将一个文件或者文件的一部分“映射”到内存中。然后这个文件就可以当作内存数组一样访问,这比传统的文件操作要快很多。
在java中,提供了FileChannel类来实现文件的内存映射。使用FileChannel大致可以分为下面三个步骤:

  1. 调用FileChannel.open()方法,获取一个FileChannel的引用
  2. 调用FileChannel的map方法,获取到一个ByteBuffer.
  3. 操作ByteBuffer,获取想要的数据

下面是一个简单的演示demo:

    Path path = Paths.get("d:\\hello.txt");
    FileChannel fc = FileChannel.open(path, StandardOpenOption.READ);
    long length = fc.size();
    ByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, length);
    int size = buffer.limit();
    byte[] data = new byte[size];
    buffer.get(data);
    String msg = new String(data, 0, data.length, Charset.forName("utf-8"));
    System.out.println(msg);

有几个参数还说有有必要说明一下:

上一篇 下一篇

猜你喜欢

热点阅读