用于文件系统而不是网络的Java NIO框架?

Sha*_*baz 2 java filesystems nio map persistent

有几个高质量的框架可以隐藏基于NIO的网络编程(mina,netty,grizzly等)的复杂性.是否有类似的框架可以简化基于NIO的文件系统编程?

例如,作为一个学习练习,我想基于这篇(真棒!)文章实现一个磁盘支持的Map:http://www.javaworld.com/javaworld/jw-01-1999/jw-01-step. HTML.

Stu*_*son 6

不是,但...)

但是,这是因为Java的NIO FileChannelMappedByteBuffer是几乎没有复杂或难于理解和作为网络和使用选择的东西java.nio.

下面是一个创建磁盘支持映射(在NIO-land中称为"映射字节缓冲区")的示例,该映射适用于您的练习:

File file = new File("/Users/stu/mybigfile.bin");
FileChannel fc = (new FileInputStream(file)).getChannel(); 
MappedByteBuffer buf = fc.map(MapMode.READ_WRITE, 0, file.length());
Run Code Online (Sandbox Code Playgroud)

您可以像任何其他缓冲区一样访问缓冲区.数据在磁盘和内存之间神奇而快速地移动,全部由Java和底层操作系统的虚拟内存管理系统管理.不过,你确实对此有一定程度的控制.例如:MappedByteBuffer .force()('强制对此缓冲区的内容所做的任何更改将写入包含映射文件的存储设备.')和.load()('将此缓冲区的内容加载到物理内存中'.)我从未个人需要这些内容.