You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

VFS - Frequently asked questions

Is there a tutorial for VFS?

todo: Add link(s) here to tutorials and example code.

VfsCookbook - a cookbook has been started

How can I enter ftp passive mode?

FileSystemOptions opts = new FileSystemOptions();
FtpFileSystemConfigBuilder.getInstance().setPassiveMode(opts, true);
FileObject fo = VFS.getManager().resolveFile("ftp://host/path_to/file.txt", opts);

How do I use the org.apache.commons.vfs.FileSelector or org.apache.commons.vfs.FileFilter?

The FileFilter can be used to mimic the java.io.FileFilter interface.

FileFilter ff = new FileFilter()
{
    public boolean accept(FileSelectInfo fileInfo)
    {
        FileObject fo = fileInfo.getFile();
        return fo.getName().getBaseName().startsWith("ABC-");
    }
    		
};
VFS.getManager().resolveFile("/base/folder").findFiles(new FileFilterSelector(ff));

You should consider using the more VFS native org.apache.commons.vfs.FileSelector interface as this allows you to automatically traverse recursive.

Available FileSelectors:

So the following will be the same as above, but will scan the whole tree starting at the base folder.

FileSelector ff = new FileSelector()
{
    public boolean includeFile(FileSelectInfo fileInfo) throws Exception
    {
        FileObject fo = fileInfo.getFile();
        return fo.getName().getBaseName().startsWith("ABC-");
    }

    public boolean traverseDescendents(FileSelectInfo fileInfo) throws Exception
    {
        return true;
    }   		
};
VFS.getManager().resolveFile("/base/folder").findFiles(ff);

How do I keep an SFTP connection from hanging?

If your program is transferring files, but not exiting afterward, this is actually an issue with properly closing down the connection when you are done. If you acquired a FileSystemManager with

private FileSystemManager fsManager = VFS.getManager();

the getManager() method probably returned a [http://commons.apache.org/vfs/apidocs/org/apache/commons/vfs/impl/StandardFileSystemManager.html StandardFileSystemManager] which extends the DefaultFileSystemManager class and implements the FileSystemManager interface.

What you are probably after is the [http://commons.apache.org/vfs/apidocs/org/apache/commons/vfs/impl/DefaultFileSystemManager.html#close() close()] method of the DefaultFileSystemManager to clean up any temporary files and close all providers. Cast the FileSystemManager to a DefaultFileSystemManager access the close() method like this:

((DefaultFileSystemManager) fsManager).close();
  • No labels