FUSEベースのアンダーランド ファイルシステム アプリケーションを Java で構築したいと考えています。Fuse-J、jnetfs、Fuseforjava、javafuseなど、Web 上で利用可能なバインディング ライブラリがいくつかあります。
今日の時点でどれも本当に生きているようには見えないので、私は最初の試みをしました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);
filler
何かを見逃したのかもしれませんが、ディレクトリの内容を入力する方法がわかりません...
この helloworld の例だけでも、次のような奇妙な点があります。
public int read_post(String path, String buf, int size, int offset, Fuse_file_info info, int result);
Javaは不変であると想定されているのに対し、これはデータのバイトで満たさ れることになっています。buf
size
String