任何机会javafuse可以工作?(Any chance javafuse can work?)

2019-09-18 15:16发布

我想建立一个FUSE基于文件系统下井应用,Java中。 有图书馆的几个绑定可以在网络上保险丝-J , jnetfs , Fuseforjava , javafuse 。

他们似乎都不如今天真的还活着,所以我给我的第一次尝试JavaFuse

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

我想重现这一导火索HelloWorld示例 。


问:是否有任何机会,这一点:

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);
  • Fuse_file_info

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

还有其他的古怪只是这个HelloWorld示例,如:

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

这是为了填补 bufsize数据的字节,而Java String应该是不可变的。

Answer 1:

您可以尝试JNR熔丝项目。

该项目采用JNR,让您实现全面JNI的性能和易于实施的。

实施的实例你好世界的文件系统过滤器。



Answer 2:

我不完全相信,你正在尝试与双重功能做read_preread_post

虽然我猜,他们代表前期工作和后期工作。 也许你可以声明正常readdir()并叫你与前从里面张贴? 传递相同的参数背部,向前? 因为你必须声明readdir()fuse_main()

而关于与缓冲区的第二件事情,它只是需要一个字节保持容纳。 你可以通过它的字符阵列,或任何与它的字节,记size_t size表示缓冲区的大小。 在helloworld.c ,字符串字符复制通过缓冲memcpy() 您可以从文件中读取字节,并把它们作为缓冲带合适的长度一起。

我是新来的保险丝,想知道它是怎么比的标准下使用Java工作



文章来源: Any chance javafuse can work?
标签: java fuse