【发布时间】:2015-08-04 08:39:27
【问题描述】:
我想用Java创建一个简单的内存文件系统,它有一个根目录,可以创建新的子目录。在目录中,我们可以创建新文件、写入文件、读取文件、删除文件以及重命名文件。您能否从哪里开始(简单的代码或资源)提供一些建议。
【问题讨论】:
标签: java filesystems implementation
我想用Java创建一个简单的内存文件系统,它有一个根目录,可以创建新的子目录。在目录中,我们可以创建新文件、写入文件、读取文件、删除文件以及重命名文件。您能否从哪里开始(简单的代码或资源)提供一些建议。
【问题讨论】:
标签: java filesystems implementation
自定义文件系统提供程序必须实现 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/
marschall(JSR-203 文件系统的内存实现) https://github.com/marschall/memoryfilesystem
【讨论】:
您可以使用 Google 的 Jimfs 和 java 7 NIO 包在 java 中创建内存文件系统。
请参考此链接。在这里,您将获得一个示例教程: create In-memory file system in java
【讨论】:
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 在内存中工作以进行读写。有什么想法吗?