【发布时间】:2016-02-16 20:05:07
【问题描述】:
我想用 Java 构建一个基于FUSE 的地下文件系统应用程序。 网上有一些绑定库,Fuse-J、jnetfs、Fuseforjava、javafuse。
截至今天,他们似乎还没有真正活着,所以我第一次尝试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);
应该用size 字节的数据填充 buf,而Java String 应该是不可变的。
【问题讨论】:
-
是的,它看起来很有趣。但我已经切换到JNetFs,它回答了我迄今为止的所有要求! (虽然 C 库中仍然缺少一些绑定,但我必须自己绑定它们)
-
+1 获得 FUSE-Java 实现列表。