我想用Java 构建一个基于FUSE的underland文件系统应用程序.网上有一些绑定库,Fuse-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;
}
Run Code Online (Sandbox Code Playgroud)
可以通过这个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);
Run Code Online (Sandbox Code Playgroud)
也许我错过了什么,但我看不出如何使用filler填充目录内容...
这个helloworld示例还有其他奇怪之处,例如:
public int read_post(String path, String buf, int size, int offset, Fuse_file_info info, int result);
Run Code Online (Sandbox Code Playgroud)
这是为了填充 buf与size数据的字节,而Java String应该是不可变的.
我不太确定您想用双功能read_pre&做什么read_post。
虽然我猜,它们代表了工作前和工作后。也许你可以声明正常readdir()并从内部给你打电话?来回传递相同的参数?因为你必须readdir()向fuse_main().
关于缓冲区的第二件事,它只需要一个字节保存存储。您可以向其传递字符数组或任何包含字节的内容,用 表示,size_t size表示缓冲区的大小。在 中helloworld.c,字符串字符通过 复制到缓冲区memcpy()。您可以从文件中读取字节并将它们作为缓冲区以及适当的长度传递。
我是 FUSE 新手,想知道与标准 C 相比,使用 Java 的工作情况如何。
| 归档时间: |
|
| 查看次数: |
2513 次 |
| 最近记录: |