Skip navigation links
TrueVFS 0.12.0

@Nonnull @ParametersAreNonnullByDefault

Package net.java.truevfs.access

Provides uniform, transparent, thread-safe, read/write access to archive files as if they were virtual directories.

See: Description

Package net.java.truevfs.access Description

Provides uniform, transparent, thread-safe, read/write access to archive files as if they were virtual directories.

The TFile* Classes

This is the primary API for JSE 6 compliant TrueVFS applications: Like the API of the module TrueVFS Access Path, this API is just a facade for the module TrueVFS Kernel. In contrast to the TrueVFS Access Path API however, this API is limited to access the platform file system and any archive files within the platform file system. In contrast to the TrueVFS Kernel API, both APIs are designed to be easy to learn and convenient to use while providing a great level of flexibility. Because all virtual file system state is managed by the TrueVFS Kernel module, this module can concurrently access the same file systems than the TrueVFS Access Path module.

For example, an application could access an entry within an archive file using a TFile like this:


 File entry = new TFile("archive.zip/dir/HälloWörld.txt");
 Writer writer = new TFileWriter(entry);
 try {
     writer.write("Hello world!\n");
 } finally {
     writer.close();
 }
 

This example presumes that the JARs of the file system driver modules TrueVFS Driver File and TrueVFS Driver TAR are present on the run time class path.

Mind that a TFile is a File, so you can use it polymorphically. However, you cannot use it with a plain File(In|Out)putStream or a plain File(Reader|Writer) to access prospective archive entries because these classes were not designed for this task. You have to use a TFile(In|Out)putStream or a TFile(Reader|Writer) instead.

The TPath Class and its Companions

This is the primary API for JSE 7 compliant TrueVFS applications: Like the API of the module TrueVFS Access File*, this API is just a facade for the module TrueVFS Kernel. In contrast to the TrueVFS Access File* API however, this API can access any (virtual) file system, not just the platform file system and any archive files within the platform file system. In contrast to the TrueVFS Kernel API, both APIs are designed to be easy to learn and convenient to use while providing a great level of flexibility. Because all virtual file system state is managed by the TrueVFS Kernel module, this module can concurrently access the same file systems than the TrueVFS Access File* module.

For example, an application could access an entry within an archive file which is located at a web site using a TPath like this:


 Path path = new TPath(new URI("http://acme.com/download/everything.tar.gz/README.TXT"));
 try (InputStream in = Files.newInputStream(path)) {
     // Read archive entry contents here.
     ...
 }
 

This example presumes that the JARs of the file system driver modules TrueVFS Driver HTTP(S) and TrueVFS Driver TAR are present on the run time class path.

Mind that a TPath is a Path, so you can use it polymorphically with the NIO.2 API.

File System Provider Service Location

This package provides a JSE 7 compliant file system provider implementation in its class TFileSystemProvider. If the JAR of this package is present on the run time class path, an application can transparently access archive files without a compile time dependency on this API. However, some constraints apply in this case because the NIO.2 API does not support file system federation:

So the only way how an application can use the TrueVFS file system provider instance without a compile time dependency is to use FileSystems.newFileSystem(java.nio.file.Path, java.lang.ClassLoader). However, this is unlikely to get used in most applications.

Recommended Usage

To overcome these constraints, an application should not rely on File System Provider Service Location and directly create TPath instances instead by calling one of the public class constructors. Once created, it's safe to use TPath instances polymorphically as Path instances.

General Constraints

Currently, the NIO.2 API provides some features which are not supported by the implementation of this package, e.g. a file system permissions or watch services. Consequently, if an unsupported method is called, an UnsupportedOperationException gets thrown.

Author:
Christian Schlichtherle
Skip navigation links
TrueVFS 0.12.0

Copyright © 2005–2018 Schlichtherle IT Services. All rights reserved.