git clone git://github.com/EtiennePerot/fuse-jna.git
fuse-jna/examples/hellofs.sh ~/hellofs
You now have a test filesystem in ~/hellofs
.
You'll find a file called hello.txt
in there.
There's another example filesystem that you can use, which is writable:
fuse-jna/examples/memoryfs.sh ~/memoryfs
-
Subclass
net.fusejna.FuseFilesystem
and override the methods you need (For convenience, there is an adapter calledFuseFilesystemAdapterFull
). -
Create an instance of your subclass, then call
.mount(mountpoint)
on it. -
The filesystem will be unmounted automatically at JVM shutdown time if possible. You can unmount it at runtime using
.unmount()
. -
(Bonus) You can get logging for free by calling
.log(true)
or.log(myLogger)
on the filesystem instance.
fuse-jna was born out of the desire for no-compilation-required, no-bullshit, actually-working bindings to the FUSE library.
Originally built to make the OS X/Linux port of SrcDemo² possible, it was separated into its own library because I figured others would benefit from it.
I like Python, and I like using fuse.py when writing FUSE filesystems in Python. Thanks to ctypes, only one file and you get nice, straight Python bindings. The goal of fuse-jna is to bring FUSE bindings to Java with the same simplicity.
To do that, it uses JNA, which was inspired by Python's ctypes in terms of ease-of-use.
Following fuse.py, fuse-jna should work with:
- OS X with MacFUSE/fuse4x/OSXFUSE on Intel architectures
- Linux with FUSE on Intel and PowerPC architectures
- FreeBSD with FUSE on Intel architectures
Feel free to open an issue to get your project added here.
fuse-jna is licensed under the BSD 2-Clause License. JNA is licensed under the LGPL v2.1.