Hallo,
ich möchte mir per Java Daten aus tar.gz Archiven entpacken. Dazu verwende ich commons-compress. Ich wollte zuerst das "gz" entpacken und im Nachhinein das Tar Archiv "auspacken". Aber ich bleibe schon beim "gz" hängen. Hier erstmal der Code:
Nun bekomme ich aber immer ein EOF Exception
org.apache.commons.compress.compressors.CompressorException: Could not create CompressorInputStream
at org.apache.commons.compress.compressors.CompressorStreamFactory.createCompressorInputStream(CompressorStreamFactory.java:81)
at Unzip.unGz(Unzip.java:28)
at Main.main(Main.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:207)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:197)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:136)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:43)
at org.apache.commons.compress.compressors.CompressorStreamFactory.createCompressorInputStream(CompressorStreamFactory.java:76)
... 7 more
Ich kann damit leider nichts anfangen, ich finde auch keine Fehler.
Vielleicht kann mir wer helfen, Danke.
EDIT: Ist es möglich, dass die zu verarbeitende Datei einfach zu groß ist ? Die archiv.tar.gz ist knapp 76 mb groß, die archiv.tar, wenn ich sie z.b. mit 7zip entpacke, über 1gb.
ich möchte mir per Java Daten aus tar.gz Archiven entpacken. Dazu verwende ich commons-compress. Ich wollte zuerst das "gz" entpacken und im Nachhinein das Tar Archiv "auspacken". Aber ich bleibe schon beim "gz" hängen. Hier erstmal der Code:
Java:
public void unGz() {
try
{
File dir = new File("c:\\ftpFiles");
File files[] = dir.listFiles();
System.out.println(Arrays.toString(files));
for(File file: files) {
InputStream in = new FileInputStream(file.getName());
CompressorInputStream cim = new CompressorStreamFactory().createCompressorInputStream("gz", in);
IOUtils.copy(in, new FileOutputStream("archive.tar"));
in.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (CompressorException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
Nun bekomme ich aber immer ein EOF Exception
org.apache.commons.compress.compressors.CompressorException: Could not create CompressorInputStream
at org.apache.commons.compress.compressors.CompressorStreamFactory.createCompressorInputStream(CompressorStreamFactory.java:81)
at Unzip.unGz(Unzip.java:28)
at Main.main(Main.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:207)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:197)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:136)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
at org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:43)
at org.apache.commons.compress.compressors.CompressorStreamFactory.createCompressorInputStream(CompressorStreamFactory.java:76)
... 7 more
Ich kann damit leider nichts anfangen, ich finde auch keine Fehler.
Vielleicht kann mir wer helfen, Danke.
EDIT: Ist es möglich, dass die zu verarbeitende Datei einfach zu groß ist ? Die archiv.tar.gz ist knapp 76 mb groß, die archiv.tar, wenn ich sie z.b. mit 7zip entpacke, über 1gb.
Zuletzt bearbeitet: