首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java的FileChannel的内存版本

Java的FileChannel的内存版本
EN

Stack Overflow用户
提问于 2009-12-16 22:41:54
回答 2查看 1.5K关注 0票数 3

我正在对我正在使用的一个库进行一些更改。为了减少内存使用,该库将其临时数据写入磁盘,而不是将其保存在内存中。然而,对于我的使用场景,将其保存在内存中会更有效率。它还存在一些并发问题,因为它的临时文件具有常量名称,因此不能在不同的线程中并发运行(因为这些线程会破坏彼此的数据)。

因此,我需要更改库,使其将所有数据保存在内存中。我最初并没有编写这个库,因此我不太喜欢对代码进行剧烈的更改。因此,我希望通过尽可能少的重构来做到这一点。写入磁盘的代码非常简单。下面是一个(稍微简化的)示例:

代码语言:javascript
复制
final FileChannel fileChannel = this.randomAccessFile.getChannel();
fileChannel.position(calculatePosition());
while (blockData.hasRemaining())
{
 fileChannel.write(blockData);
}

块的读取非常相似(即它使用从RandomAccessFile获得的FileChannel )。

我觉得最简单的解决方案是如果我可以使用FileChannel的一些实现,它映射到内存中的一个位置,而不是文件。我知道我可以使用FileChannel的map-method将文件映射到内存中的某个位置。然而,这是另一种方式。这给了我一个文件的“内存API”。我想要一个FileChannel-interface和一些内存。有什么可用的实现吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-17 00:43:38

Java7将允许可插拔的文件系统,因此您将能够使用基于内存的文件系统,并保留当前的FileChannel应用编程接口。除此之外,您很可能必须将您使用的API更改为Commons-VFS,就像禤浩焯建议的那样,或者使用仅内存结构。

票数 2
EN

Stack Overflow用户

发布于 2009-12-16 22:54:18

也许您可以使用内存中的文件系统,比如Apache Commons VFS

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1915069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档