jnr-fuse is a FUSE implementation in java using Java Native Runtime (JNR).
The main goal of the project is to provide an easy way to create a high-performance filesystem in userspace.
FUSE (Filesystem in Userspace) is an OS mechanism for unix-like OS that lets non-privileged users create their own file systems without editing kernel code.
Java Native Runtime (JNR) is high-performance Java API for binding native libraries and native memory.
Prior to 0.5.5
, jnr-fuse was only available in JCenter. Due to sunsetting of JCenter, starting from 0.5.5
is available in maven central.
dependencies {
compile 'com.github.serceman:jnr-fuse:0.5.5'
}
<dependencies>
<dependency>
<groupId>com.github.serceman</groupId>
<artifactId>jnr-fuse</artifactId>
<version>0.5.5</version>
</dependency>
</dependencies>
For implementing your own filesystem you just need to extend FuseStubFS class and implement methods you need.
See some examples.
See blog article about the implementation
- Alluxio: Alluxio is a memory-centric distributed storage system
- Cryptomator: A user-friendly encryption tool for cloud storage services
- mux2fs: Muxes subtitles into Matroska files as a FUSE filesystem
- healthcare-api-dicom-fuse: FUSE plugin for the Google Cloud Healthcare DICOM API
Supported platforms | ||
---|---|---|
Linux | x64 | x86 |
MacOS (via osxfuse) | x64 | x86 |
Windows (via winfsp) | x64 | n/a |
See instructions.