You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Alexandre Sieira <al...@gmail.com> on 2014/03/13 01:17:40 UTC
[vfs] opening gzip files inside a tar
I have received a tar file (/Users/user1/Downloads/tmp/archive.tar) that contains several .gz files within it, and was trying to read one of them (dir1/dir2/file.gz).
To preempt possible complaints: I know this is weird and the opposite of the usual .tar.gz format. But this is a huge file I will get regularly from a third party and don’t have a whole lot of control over it, so bear with me here.
This is what my code looks like:
FileObject file = VFS.getManager().resolveFile(“gz:tar:file:///Users/user1/Downloads/tmp/archive.tar!/dir1/dir2/file.gz”);
However, this gives me the following error:
Exception in thread "main" org.apache.commons.vfs2.FileSystemException: Could not resolve file "gz:tar:file:///Users/user1/Downloads/tmp/archive.tar!/!/".
at org.apache.commons.vfs2.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:348)
at org.apache.commons.vfs2.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:317)
at org.apache.commons.vfs2.provider.AbstractFileSystem.getRoot(AbstractFileSystem.java:286)
at org.apache.commons.vfs2.provider.AbstractLayeredFileProvider.createFileSystem(AbstractLayeredFileProvider.java:92)
at org.apache.commons.vfs2.provider.AbstractLayeredFileProvider.findFile(AbstractLayeredFileProvider.java:63)
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:693)
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:649)
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:605)
at <redacted>.main(<redacted>.java:148)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at org.apache.commons.vfs2.provider.compressed.CompressedFileFileObject.<init>(CompressedFileFileObject.java:45)
at org.apache.commons.vfs2.provider.gzip.GzipFileObject.<init>(GzipFileObject.java:38)
at org.apache.commons.vfs2.provider.gzip.GzipFileSystem.createFile(GzipFileSystem.java:44)
at org.apache.commons.vfs2.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:344)
... 8 more
Am I doing something wrong here? Sorry if this is a rookie mistake, I have just now started using VFS.
--
Alexandre Sieira
CISA, CISSP, ISO 27001 Lead Auditor
"The truth is rarely pure and never simple."
Oscar Wilde, The Importance of Being Earnest, 1895, Act I