gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:33:30 25 4
gpt4 key购买 nike

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

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

最佳答案

没有(但是...)

但那是因为Java的NIO FileChannelMappedByteBuffer不像网络和 Selector 那样复杂或难以理解和使用东西java.nio

这是一个创建适合您练习的磁盘支持映射(在 NIO 领域称为“映射字节缓冲区”)的示例:

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

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

关于用于文件系统而不是网络的 Java NIO 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1129006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com