About

TrueVFS is a virtual file system (VFS) for Java 7 which enables client applications to perform CRUD (Create, Read, Update, Delete) operations on archive files as if they were virtual directories, even with nested archive files in multithreaded environments - see Key Features. For example, creating a TAR.GZ file from a ZIP file is as easy as calling:

new TFile("archive.zip").cp_rp(new TFile("archive.tar.gz"));

The semantics of this example are roughly equivalent to the GNU command...

cp -rp archive.zip archive.tar.gz

... if only the cp command would let you access ZIP files and TAR.GZ files as if they were directories. The high abstraction level of the API in the client module TrueVFS Access enables optimization of I/O access, so that this example operation doesn't even require any buffering to temporary files!

License

TrueVFS is open source software and is covered by the Eclipse Public License, Version 1.0, so you can link to it in your closed source software for free. Please refer to the license agreement for details.

State Of Affairs

TrueVFS is the official successor of TrueZIP. As of version 7.7.7, the TrueZIP project has changed to maintenance mode. In comparison, TrueVFS 0.11.0 provides superior error handling, improved performance plus advanced features for archive drivers and virtual file system monitoring and management.

TrueVFS has been developed by refactoring the TrueZIP code base. TrueVFS 0.11.0 reflects the latest changes up to TrueZIP 7.7.9 - see Change Log. While refactoring, the original suite of test code has been maintained and extended so that you can put the same faith into TrueVFS than you can put into TrueZIP.

Future Direction

If you are interested in the plans for TrueVFS, please have a look at its Road Map or subscribe to its Users Mailing List for discussion. For continuity, TrueVFS and TrueZIP share the same mailing lists. If you are already subscribed to any TrueZIP mailing list, then you don’t need to do anything.

TrueVFS version is not yet at 1.0 because chances are that there will be backwards incompatible changes to the API of internal modules. This is unlikely to happen to the API of the client module TrueVFS Access, however.

Supported File System Types

TrueVFS 0.11.0 ships with pluggable driver modules for FILE, HTTP(S), JAR, ODF, SFX, TAR, TAR.BZIP2, TAR.GZIP, TAR.XZ, ZIP and ZIP.RAES (TZP) file system schemes.

Simply add the JAR artifact of these driver modules to the run time class path to make their file system drivers available for service location in the client API module - see below.

Using TrueVFS

As a library, TrueVFS provides simple, uniform, transparent, thread-safe, read/write access to archive files as if they were virtual directories in a file system path. TrueVFS provides the client module TrueVFS Access with the API for convenient access to its (federated virtual) file system space.

Writing an application for this API is really simple: Please have a look at the page Getting Started to learn how to generate a TrueVFS client application from a Maven archetype in about ten minutes or have a look at the tutorial.

Extending TrueVFS

As a framework, TrueVFS provides the API to write pluggable file system drivers which seemlessly integrate into the federated file system space. The module TrueVFS Kernel modules features federating, multithreading, multiplexing, caching and accounting so that (archive) file system drivers do not need to take care of these aspects of a (virtual) file system.

While there is no tutorial for how to write a file system driver, there's comprehensive Javadoc and sample code:

  • If you are going to write an archive file system driver, please consult the Javadoc for the abstract class FsArchiveDriver.
  • If you are going to write a plain file system driver, please consult the Javadoc for the abstract class FsDriver.

Professional Services

Do you need any consultancy on using or integrating TrueVFS into your application? Or do you need any extensions or improvements to TrueVFS? If you are interested in my professional services, then please contact sales AT schlichtherle DOT de.