Virtual File Systems (VFS) in Java

Many different solutions to persistence follow a similar structure: a hierarchical organization into files and folders. It appears sensible to access these representations using a common application interface.

Initially, I implemented my own little library, which was capable of accessing files on the hard disk and keeping them in memory. Now I found the Apache Commons VFS library (, which offers similar functionality and more. I am thinking now to migrate my libraries to this library. However, I think also in one of the coming releases of Java a common API for file access should be included.

However, the VFS library is not trivial to get ready to plug into a Maven project. This can be achieved by the following steps:

  • Checkout the current trunk using ‘svn co vfs‘ (I tested with revision 1032448)
  • In the checked out files, go to the directory ‘core
  • Test and package the current release (it was 2.1-SNAPSHOT as I tested, far higher than the version 1.0 available on public maven repositories or the 2.0-SNAPSHOT version on the apache snapshots repository): ‘mvn compile package
  • Now you can upload the created commons-vfs-2.1-SNAPSHOT.jar from the folder /core/target to your local maven repository (the pom file is located in the directory /core/pom.xml.

You can start using the library using:


The created archive also has a MANIFEST.MF file with exported packages etc required for an OSGI environment.


Examples of using Apache Commons VFS

Usage Example for SFTP

A GUI written on top of Commons VFS

2 thoughts on “Virtual File Systems (VFS) in Java

Leave a Reply to Christian Schlichtherle Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s