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.
repositories {
jcenter()
}
dependencies {
compile 'com.github.serceman:jnr-fuse:0.5.3'
}
<repositories>
<repository>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.serceman</groupId>
<artifactId>jnr-fuse</artifactId>
<version>0.5.3</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
Supported platforms | ||
---|---|---|
Linux | x64 | x86 |
MacOS (via osxfuse) | x64 | x86 |
Windows (via winfsp) | x64 | n/a |
See instructions.