Java FileChannel的内存版本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java FileChannel的内存版本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1129字,纯文字阅读大概需要2分钟。
内容图文
我正在对正在使用的库进行一些更改.为了减少内存使用,库正在将其临时数据写入磁盘,而不是将其保留在内存中.但是,对于我的使用情况,将其保留在内存中效率更高.它还有一些并发问题,因为它的临时文件名是常量,因此不能在不同的线程中同时运行(因为这些线程会破坏彼此的数据).
因此,我需要更改库,以便将其所有数据保留在内存中.我最初不是写库的,因此对代码进行大刀阔斧的调整并不十分满意.因此,我希望尽可能少地进行重构.写入磁盘的代码非常简单.这是一个(有些简化)的示例:
final FileChannel fileChannel = this.randomAccessFile.getChannel();
fileChannel.position(calculatePosition());
while (blockData.hasRemaining())
{
fileChannel.write(blockData);
}
块的读取非常相似(即,它使用FileChannel,它是从RandomAccessFile获取的).
如果我可以使用FileChannel的某种实现,这似乎是最简单的解决方案,该实现映射到内存中的位置而不是文件.我知道我可以使用FileChannel的map方法将文件映射到内存中的位置.但是,这是另一回事.这给了我一个文件的“内存API”.我想要一个针对某些内存的FileChannel接口.是否有任何可用的实现?
解决方法:
Java 7将允许可插入文件系统,因此您将能够使用基于内存的文件系统并保留当前的FileChannel API.除此之外,您可能必须按照Adrian的建议将您使用的API更改为Commons-VFS或使用仅内存结构.
内容总结
以上是互联网集市为您收集整理的Java FileChannel的内存版本全部内容,希望文章能够帮你解决Java FileChannel的内存版本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。