【问题标题】:In-memory file system in javajava中的内存文件系统
【发布时间】:2015-08-04 08:39:27
【问题描述】:

我想用Java创建一个简单的内存文件系统,它有一个根目录,可以创建新的子目录。在目录中,我们可以创建新文件、写入文件、读取文件、删除文件以及重命名文件。您能否从哪里开始(简单的代码或资源)提供一些建议。

【问题讨论】:

    标签: java filesystems implementation


    【解决方案1】:

    自定义文件系统提供程序必须实现 java.nio.file.spi.FileSystemProvider 类。文件系统提供程序由 URI 方案标识,例如文件、jar、内存、cd。

    下面的这些链接提供了很好的开始信息

    http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

    下面的链接(不是关于内存文件系统的)是关于虚拟文件系统的。它讨论了一些设计问题,如果您决定创建自己的文件系统,可以帮助您。

    http://www.flipcode.com/archives/Programming_a_Virtual_File_System-Part_I.shtml

    但您始终可以使用已经构建和测试过的代码。这将更快、更容易维护,并且您将在错误情况下获得支持。

    看看 jimfs(Java 7+ 的内存文件系统)

    https://github.com/google/jimfs

    也看看

    公用虚拟文件系统 http://commons.apache.org/proper/commons-vfs/

    ma​​rschall(JSR-203 文件系统的内存实现) https://github.com/marschall/memoryfilesystem

    【讨论】:

    • 第二个例子并不适合nio2。更好地对它们进行分类;)
    • @fge 添加了一些关于链接的信息以避免混淆。
    • 好的,但这是 2015 年; apache-common-vfs 基本上已经过时了:)
    【解决方案2】:

    您可以使用 Google 的 Jimfs 和 java 7 NIO 包在 java 中创建内存文件系统。

    请参考此链接。在这里,您将获得一个示例教程: create In-memory file system in java

    【讨论】:

    • 不幸的是 jimfs 有几个限制。你最好的选择是使用memoryfilesystem
    【解决方案3】:

    使用memoryfilesystem

    Jimfs 在之前的回答中已经提到过,但是 memoryfilesystem 处理的更多。

    示例用法:

    final FileSystem fs = MemoryFileSystem.newLinux().build("myfs");
    
    final Path dir = fs.getPath("thedir");
    
    Files.createDirectory(dir);
    

    等等等。使用 java.nio.file API 来操作其中的文件(File 不起作用!)。详情请见here

    【讨论】:

    • 我需要File 在内存中工作以进行读写。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2017-01-04
    • 2011-08-03
    • 2011-07-30
    • 2018-12-09
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多