用Java创建自定义FileSystem实现

时间:2014-04-09 14:46:43

标签: java filesystems

我在oracle上读到可以创建自定义FileSystem,但我无法找到有关创建自定义文档的大量文档。任何人都可以将我链接到某个地方,我可以了解有关自定义FileSystem的更多信息吗?

我在哪里读到这个: http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

3 个答案:

答案 0 :(得分:12)

A(真实)简单示例

用作示例的非常简单的Java FileSystemnodet/githubfs。只有少数classes,它将为您提供如何实现基本文件系统的风格。主要课程是:

请注意,此文件系统未实现所有操作(这是高级示例的一部分原因)。

实验!

要尝试使用自定义FileSystem而不进行任何编码,一个方便的项目是puniverse/javafs。它允许您将其作为FUSE安装并从终端与其进行交互。安装非常简单:

import co.paralleluniverse.javafs.JavaFS;
...
// Need to mkdir /tmp/mnt first
JavaFS.mount(fileSystem, Paths.get("/tmp/mnt"));
Thread.sleep(Long.MAX_VALUE);

答案 1 :(得分:7)

Google开源了一个名为JimFS的完整内存文件系统实现:https://github.com/google/jimfs

答案 2 :(得分:0)

我知道这是一个古老的问题,但是许多人仍然想要实际的答案,这里没有。问题在于OP列出的Oracle(Sun)文档缺少关键信息。造成混淆的是,文档所引用的“演示”以一种令人困惑的方式打包。有一个Demo.java源文件,src.zip和一个zipfs.jar。 Demo.java不是FileSystemProvider。它是一个自定义文件系统。为了使其正常工作,您必须将zipfs.jar添加到JRE / JDK的“扩展”文件夹中,以便在调用Demo.getZipFSProvider()方法时,将找到返回自定义FileSystem的自定义FileSystemProvider。如果您在src.zip中查找,将找到提供程序的代码。如果Java文档编写正确,就不会出现此问题。令人困惑。甚至演示中的自述文件也没有提及提供程序。伤心。