javafuse有什么机会可以工作吗?

时间:2012-06-27 19:47:15

标签: java fuse

我想用Java构建一个基于FUSE的underland文件系统应用程序。 网络上有一些绑定库,Fuse-JjnetfsFuseforjavajavafuse

截至今天,他们似乎都没有活着,所以我第一次尝试JavaFuse

我们必须实现的接口是: http://code.google.com/p/javafuse/source/browse/fs/JavaFS.java

我希望重现这个fuse helloworld example


问题:这是否有可能:

static int hello_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
                     off_t offset, struct fuse_file_info *fi)
{
(void) offset;
(void) fi;

if(strcmp(path, "/") != 0)
    return -ENOENT;

filler(buf, ".", NULL, 0);
filler(buf, "..", NULL, 0);
filler(buf, hello_path + 1, NULL, 0);

return 0;
}

可以通过这个java函数实现:

public int readdir_pre(String path, long buf, long filler, int offset, Fuse_file_info info);
public int readdir_post(String path, long buf, long filler, int offset, Fuse_file_info info, int result);

也许我错过了什么,但我看不到如何使用filler来填充目录内容......

这个helloworld示例还有其他奇怪之处,例如:

public int read_post(String path, String buf, int size, int offset, Fuse_file_info info, int result);

应该用<{1}}个字节的数据填充 buf,而Java size应该是不可变的。

2 个答案:

答案 0 :(得分:1)

您可以尝试jnr-fuse项目。

该项目使用JNR,因此您可以实现完整的JNI性能并且易于实现。

实施hello-world filesystem过滤器的一个示例。

答案 1 :(得分:0)

我不完全确定,您正在尝试使用双重功能read_pre&amp; read_post

虽然我猜,但他们代表的是前期工作和后期工作。也许你可以声明正常的readdir(),然后给你打电话。从里面发帖?传回相同的论点&amp;向前?因为您必须向readdir()声明fuse_main()

关于缓冲区的第二件事,它只是期望一个字节存储。您可以传递字符数组或其中包含字节的任何内容,由size_t size表示,表示缓冲区的大小。在helloworld.c中,字符串字符将通过memcpy()复制到缓冲区。您可以从文件中读取字节并将其作为缓冲区传递,并且具有适当的长度。

我是FUSE的新手,想知道使用Java与标准C相比如何工作。