Supported File Systems

Commons VFS currently supports the following file systems:

Things from the sandbox

The following file systems are in development:

  • WebDAV

    We can't release WebDAV as we depend on an snapshot, thus it is in our sandbox.
  • CIFS
  • mime

Naming

All filenames are treated as URIs. One of the consequences of this is you have to encode the '%' character using %25.

Depending on the filesystem additional characters are encoded if needet. This is done automatically, but might be reflected in the filename.

Examples

  • file:///somedir/some%25file.txt

Local Files

Provides access to the files on the local physical file system.

URI Format

[file://] absolute-path

Where absolute-path is a valid absolute file name for the local platform. UNC names are supported under Windows.

Examples

  • file:///home/someuser/somedir
  • file://C:/Documents and Settings
  • file:////somehost/someshare/afile.txt
  • /home/someuser/somedir
  • c:\program files\some dir
  • c:/program files/some dir

Zip, Jar and Tar

Provides read-only access to the contents of Zip, Jar and Tar files.

URI Format

zip:// arch-file-uri[! absolute-path]

jar:// arch-file-uri[! absolute-path]

tar:// arch-file-uri[! absolute-path]

tgz:// arch-file-uri[! absolute-path]

tbz2:// arch-file-uri[! absolute-path]

Where arch-file-uri refers to a file of any supported type, including other zip files. Note: if you would like to use the ! as normal character it must be escaped using %21.

tgz and tbz2 are convenience for tar:gz and tar:bz2.

Examples

  • jar:../lib/classes.jar!/META-INF/manifest.mf
  • zip:http://somehost/downloads/somefile.zip
  • jar:zip:outer.zip!/nested.jar!/somedir
  • jar:zip:outer.zip!/nested.jar!/some%21dir
  • tar:gz:http://anyhost/dir/mytar.tar.gz!/mytar.tar!/path/in/tar/README.txt
  • tgz:file://anyhost/dir/mytar.tgz!/somepath/somefile

gzip and bzip2

Provides read-only access to the contents of gzip and bzip2 files.

URI Format

gz:// compressed-file-uri

bz2:// compressed-file-uri

Where compressed-file-uri refers to a file of any supported type. There is no need to add a ! part to the uri if you read the content of the file you always will get the uncompressed version.

Examples

  • gz:/my/gz/file.gz

HTTP and HTTPS

Provides access to files on an HTTP server.

URI Format

http://[ username[: password]@] hostname[: port][ absolute-path]

https://[ username[: password]@] hostname[: port][ absolute-path]

Examples

  • http://somehost:8080/downloads/somefile.jar
  • http://myusername@somehost/index.html

WebDAV

Provides access to files on a WebDAV server.

URI Format

webdav://[ username[: password]@] hostname[: port][ absolute-path]

Examples

  • webdav://somehost:8080/dist

FTP

Provides access to the files on an FTP server.

URI Format

ftp://[ username[: password]@] hostname[: port][ absolute-path]

Examples

  • ftp://myusername:mypassword@somehost/pub/downloads/somefile.tgz

SFTP

Provides access to the files on an SFTP server (that is, an SSH or SCP server).

URI Format

sftp://[ username[: password]@] hostname[: port][ absolute-path]

Examples

  • sftp://myusername:mypassword@somehost/pub/downloads/somefile.tgz

CIFS

Provides access to the files on a CIFS server, such as a Samba server, or a Windows share.

URI Format

smb://[ username[: password]@] hostname[: port][ absolute-path]

Examples

  • smb://somehost/home

Temporary Files

Provides access to a temporary file system, or scratchpad, that is deleted when Commons VFS shuts down. The temporary file system is backed by a local file system.

URI Format

tmp://[ absolute-path]

Examples

  • tmp://dir/somefile.txt

res

This is not really a filesystem, it just tries to lookup a resource using javas ClassLoader.getResource() and creates a VFS url for further processing.

URI Format

res://[ path]

Examples

  • res:path/in/classpath/image.png

    might result in jar:file://my/path/to/images.jar!/path/in/classpath/image.png

ram

A filesystem which stores all the data in memory. You can configure the max size and a predicate (FileSelector). The predicate will be used to check if it is allowed to add a given file.

URI Format

ram://[ path]

Examples

  • ram:///any/path/to/file.txt

mime

This filesystem can read mails and its attachements like archives.

If a part in the parsed mail has no name, a dummy name will be generated. The dummy name is: _body_part_X where X will be replaced by the part number.

URI Format

mime:// mime-file-uri[! absolute-path]

Examples

  • mime:file:///your/path/mail/anymail.mime!/
  • mime:file:///your/path/mail/anymail.mime!/filename.pdf
  • mime:file:///your/path/mail/anymail.mime!/_body_part_0