D
D.ark-A.ngel
Gast
Hallo,
Ich möchte ein Verzeichnis, das auch Unterverzeichnisse haben kann, TAR-komprimieren. Dazu nutze ich das Package com.ice.tar, das Public Domain ist (http://www.trustice.com/java/tar). Aus dem Usenet weiß ich bereits, dass dieses Package beim TAR-Archiv-Erzeugen immer den ganzen Pfad, also auch den oberhalb des zu "packenden" Verzeichnisses mit ins TAR-Archiv schreibt. (Das möchte ich nicht unbedingt.) Allerdings geschieht das bei dem von mir verwendeten Code eben auch nicht, im Gegenteil -- bei fast jeder zu packenden Datei wird ein anderes, scheinbar zufälliges "Stück von dem Pfad" mitkodiert, so dass die resultierende Struktur im TAR-Archiv völlig unsinnig ist. Vielleicht hat jemand mit diesem TAR-Package Erfahrungen und kann mir helfen? Hier meine TAR-Klasse:
Anmerkung: Einige Anweisungsblöcke wiederholen sich. Ich habe hier weder Schleife noch Rekursion einsetzen wollen, weil bei meiner Anwendung immer nur eine Ebene an Unterverzeichnissen existieren kann (diese haben also keine weiteren Unterverzeichnisse). Und genau dadurch scheint auch die Pfadkomprimierung so eigenartig zu verlaufen... was mir zum Teil ja gefällt, ich will ja den Pfad oberhalb des Verzeichnisses nicht mit"komprimieren". Hat jemand hierfür eine Lösung gefunden?
Falls jemand das Apache-TAR für dieses Problem ausprobiert hat (oder noch ein anderes TAR-Package kennt) und das funktioniert, würde ich mich auch über diesen Hinweis freuen...
Viele Grüße,
D.ark-A.ngel
Ich möchte ein Verzeichnis, das auch Unterverzeichnisse haben kann, TAR-komprimieren. Dazu nutze ich das Package com.ice.tar, das Public Domain ist (http://www.trustice.com/java/tar). Aus dem Usenet weiß ich bereits, dass dieses Package beim TAR-Archiv-Erzeugen immer den ganzen Pfad, also auch den oberhalb des zu "packenden" Verzeichnisses mit ins TAR-Archiv schreibt. (Das möchte ich nicht unbedingt.) Allerdings geschieht das bei dem von mir verwendeten Code eben auch nicht, im Gegenteil -- bei fast jeder zu packenden Datei wird ein anderes, scheinbar zufälliges "Stück von dem Pfad" mitkodiert, so dass die resultierende Struktur im TAR-Archiv völlig unsinnig ist. Vielleicht hat jemand mit diesem TAR-Package Erfahrungen und kann mir helfen? Hier meine TAR-Klasse:
Code:
import java.io.*;
import com.ice.tar.*;
public class TARexport {
public TARexport(File inputDirectory)
throws IOException, FileNotFoundException {
// TAR-Datei spezifizieren
// (hier noch Verzeichnis angeben, wenn gewünscht!)
File outputFile = new File("output.tar");
// Streams und Schleifenvariablen INIT
TarOutputStream tarOS = new TarOutputStream(
new FileOutputStream(outputFile));
FileInputStream in;
byte buffer[] = new byte[1024];
int content = 0;
// FOR-Schleife, die alle Dateien aus allen
// Unterverzeichnissen einbezieht
File alleDateien[] = inputDirectory.listFiles();
for (int i = 0; i < alleDateien.length; i++)
{
// Datei gefunden? An TAR-Stream anfügen!
if (!(alleDateien[i].isDirectory())) {
in = new FileInputStream(alleDateien[i]);
tarOS.putNextEntry(new TarEntry(alleDateien[i]));
do {
content = in.read(buffer);
if (content != -1)
tarOS.write(buffer, 0, content);
} while (content != -1);
tarOS.closeEntry();
in.close();
} else {
// Verzeichnis gefunden? Unterverzeichnis durchsuchen!
// Dort enthaltene Dateien an TAR-Stream anfügen!
File alleUnterverzDateien[] = alleDateien[i].listFiles();
for (int j = 0; j < alleUnterverzDateien.length; j++)
{
in = new FileInputStream(alleUnterverzDateien[j]);
tarOS.putNextEntry(new TarEntry(alleUnterverzDateien[j]));
do {
content = in.read(buffer);
if (content != -1)
tarOS.write(buffer, 0, content);
} while (content != -1);
tarOS.closeEntry();
in.close();
}
}
}
tarOS.close();
}
}
Anmerkung: Einige Anweisungsblöcke wiederholen sich. Ich habe hier weder Schleife noch Rekursion einsetzen wollen, weil bei meiner Anwendung immer nur eine Ebene an Unterverzeichnissen existieren kann (diese haben also keine weiteren Unterverzeichnisse). Und genau dadurch scheint auch die Pfadkomprimierung so eigenartig zu verlaufen... was mir zum Teil ja gefällt, ich will ja den Pfad oberhalb des Verzeichnisses nicht mit"komprimieren". Hat jemand hierfür eine Lösung gefunden?
Falls jemand das Apache-TAR für dieses Problem ausprobiert hat (oder noch ein anderes TAR-Package kennt) und das funktioniert, würde ich mich auch über diesen Hinweis freuen...
Viele Grüße,
D.ark-A.ngel