D
David
Gast
Ich hab folgendes Problem. Ich will etwas zippen. Dazu wähle ich in einem JTree ein Verzeichniss aus und starte dann durch Buttondruck eine Methode die den pathnamen erhält. Er zipt zwar auch jedoch bekomm ich Probleme wenn in den Ordner weitere Verzeichnise mit Daten enthalten sind. Also wenn in dem angewählten Ordner nur Daten sind zipt er. Ich kann die Zipdatei auch öffnen, sind jedoch weiter Verzeichnise enthalten zipt er zwar aber ich kann die Zip datei nicht öffen. Ausserdem soll im Zip Menü bei "Pfad" nicht der ganze Pfad (ab C:/.." stehen sondern nur ab dem Verzeichniss welches ich gelöscht habe) da ich die Zipdatei auch auf anderen Rechner entpacken will. Hier mein Code:
Code:
public static void zip(myFile pathname) {
File files2[] = pathname.listFiles();
String test2[] = new String[files2.length];
for (int i = 0; i < files2.length; i++) {
test2[i] = files2[i].getAbsolutePath();
System.out.println(test2[i]);
}
// Buffer öffnen um Datein zu lesen
byte[] buf = new byte[1024];
//nun folgt eine try catch Anweisung um Exceptions zu behandeln / habe einen String erstellt der den Namen des zipFiles darstellt und einen Output Stream Filter mit dem ich Files ins Zip Format schreibe
try {
String outFilename = "outfile.zip";
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
outFilename));
//Komprimiert die Datei
//nun füge ich das Zip zum output Stream hinzu, putNextEntry beginnt einen neuen ZipFileEintrag zu schreiben:
for (int i = 0; i < test2.length; i++) {
System.out.println(test2[i]);
FileInputStream in = new FileInputStream(test2[i]);
//fügt ZIP zum output stream hinzu
//nun füge ich das Zip zum output Stream hinzu, putNextEntry beginnt einen neuen ZipFileEintrag zu schreiben:
out.putNextEntry(new ZipEntry(test2[i]));
//überträgt bytes von der Datei zu der Zip Datei
//Nun übertrage ich die Bytes von der Datei zum ZipFile, write schreibt hierbei ein Array von Bytes in den derzeitigen ZipEintrag
int len;
while ( (len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
}
//vervollständigt das zip file
out.close();
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}