Hallo,
ich bekomme tar.gz Dateien, diese möchte ich mit einer Javaklasse entpacken. Ich verwende zum entpacken das Commons.Compress package. Ich hab hier mal was gebastelt:
Hier meine Methode zum entpacken des .gz
Und nun die Methode zum entpacken des .tar
Das funktioniert auch alles, eigentlich. Aber es dauert irgendwie sehr sehr sehr lange. Ich bekomme eine 70mb tar.gz datei das Tar-Archiv ist dann aber 1,3gb groß. Kann man da vielleicht irgendwas machen, oder den "Algorithmus" ändern, anders schreiben, dass es schneller/besser geht?
ich bekomme tar.gz Dateien, diese möchte ich mit einer Javaklasse entpacken. Ich verwende zum entpacken das Commons.Compress package. Ich hab hier mal was gebastelt:
Hier meine Methode zum entpacken des .gz
Java:
private final int BUFFER = 2048;
System.out.println(new Date() + " - Start extracting: " + file.getName());
InputStream is = new FileInputStream(file);
OutputStream out;
out = new FileOutputStream(gzFile.getCanonicalFile() + "\\" + GzipUtils.getUncompressedFilename(file.getName()));
CompressorInputStream in;
in = new CompressorStreamFactory().createCompressorInputStream("gz", is);
final byte[] buffer = new byte[BUFFER];
int n = 0;
while (-1 != (n = in.read(buffer))) {
out.write(buffer, 0, n);
}
is.close();
in.close();
Und nun die Methode zum entpacken des .tar
Java:
InputStream is = new FileInputStream("c:\\ftpFiles\\GZ\\" + file.getName());
ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream("tar", is);
TarArchiveEntry entry;
while ((entry = (TarArchiveEntry) in.getNextEntry()) != null) {
System.out.println(new Date() + " - Extracting: " + entry.getName());
OutputStream out = new FileOutputStream(new File(tarFile.getCanonicalFile() + "\\", entry.getName()));
IOUtils.copy(in, out);
System.out.println(new Date() + " - " + entry.getName() + " has been unzipped");
out.close();
}
in.close();
Das funktioniert auch alles, eigentlich. Aber es dauert irgendwie sehr sehr sehr lange. Ich bekomme eine 70mb tar.gz datei das Tar-Archiv ist dann aber 1,3gb groß. Kann man da vielleicht irgendwas machen, oder den "Algorithmus" ändern, anders schreiben, dass es schneller/besser geht?