VFS - Frequently asked questions
Is there a tutorial for VFS?
todo: Add link(s) here to tutorials and example code. For example, at the moment I'm looking for an example of reading a tar file, and extracting and expanding gzip files inside that tar file.
VfsCookbook - a cookbook has been started
How to 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 to 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:
- AllFileSelector - select all files
- FileDepthSelector - select files at a given depth range
- FileTypeSelector - select files by type (file, folder)
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);