Hallo!
Ich habe mir da was zusammengestellt zum unzippen von Archiven mit Java. Leider sind in den Archiven die Dateien mit voller Pfadangabe gespeichert und mein Programm kann diese einfach nicht anlegen. Es gibt immer eine Fehlermeldung:
C:\Programme\eclipse\workspace\JavaZip>java jUnzip test.zip
Extracting file: sites/gsnmbx/site/live/cgi-bin/temp/xdwtpmne1057239591/C-0MGK0-
0BF-004.pdf
Unhandled exception:
java.io.FileNotFoundException: sites\gsnmbx\site\live\cgi-bin\temp\xdwtpmne10572
39591\C-0MGK0-0BF-004.pdf (Das System kann den angegebenen Pfad nicht finden)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at jUnzip.main(jUnzip.java:46)
Ich brauche nur noch die Funktion, dass die Dateien nicht in das Verzeichnis ausgepackt werden sollen, in dem sie gespeichert wurden, sondern dass ich dem Javaprogramm ein (existierendes) Verzeichnis mitgeben kann, wohin er die Dateien entpacken kann.
Ich habe mir da was zusammengestellt zum unzippen von Archiven mit Java. Leider sind in den Archiven die Dateien mit voller Pfadangabe gespeichert und mein Programm kann diese einfach nicht anlegen. Es gibt immer eine Fehlermeldung:
C:\Programme\eclipse\workspace\JavaZip>java jUnzip test.zip
Extracting file: sites/gsnmbx/site/live/cgi-bin/temp/xdwtpmne1057239591/C-0MGK0-
0BF-004.pdf
Unhandled exception:
java.io.FileNotFoundException: sites\gsnmbx\site\live\cgi-bin\temp\xdwtpmne10572
39591\C-0MGK0-0BF-004.pdf (Das System kann den angegebenen Pfad nicht finden)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at jUnzip.main(jUnzip.java:46)
Ich brauche nur noch die Funktion, dass die Dateien nicht in das Verzeichnis ausgepackt werden sollen, in dem sie gespeichert wurden, sondern dass ich dem Javaprogramm ein (existierendes) Verzeichnis mitgeben kann, wohin er die Dateien entpacken kann.
Code:
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class jUnzip {
public static final void copyInputStream(InputStream in, OutputStream out)
throws IOException {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) >= 0)
out.write(buffer, 0, len);
in.close();
out.close();
}
public static final void main(String[] args) {
Enumeration entries;
ZipFile zipFile;
if (args.length != 1) {
System.err.println("Usage: Unzip zipfile");
return;
}
try {
zipFile = new ZipFile(args[0]);
entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement();
if (entry.isDirectory()) {
System.err.println("Extracting directory: "
+ entry.getName());
// This is not robust, just for demonstration purposes.
(new File(entry.getName())).mkdir();
continue;
}
System.err.println("Extracting file: " + entry.getName());
copyInputStream(zipFile.getInputStream(entry),
new BufferedOutputStream(new FileOutputStream(entry
.getName())));
}
zipFile.close();
} catch (IOException ioe) {
System.err.println("Unhandled exception:");
ioe.printStackTrace();
return;
}
}
}