Hallo,
mit dem folgenden Programm versuche ich ein Verzeichnis zu zippen. Die Zip-Datei wird zwar erstellt, wenn ich sie jedoch mit WinZip öffen möchte, dann kommt folgende Fehlermeldung:
"Datei kann nicht geöffnet werden. Offenbar handelt sich um ein nicht gültiges Archiv."
Dann öffnet WinZip ohne Dateien.
(siehe Kommentar im Code "Zip-Datei schreiben")
Wenn ich die Eingabedatei in normale Ausgabedateien schreibe, funktioniert es. (siehe Kommentar "normale Datei schreiben")
mit dem folgenden Programm versuche ich ein Verzeichnis zu zippen. Die Zip-Datei wird zwar erstellt, wenn ich sie jedoch mit WinZip öffen möchte, dann kommt folgende Fehlermeldung:
"Datei kann nicht geöffnet werden. Offenbar handelt sich um ein nicht gültiges Archiv."
Dann öffnet WinZip ohne Dateien.
(siehe Kommentar im Code "Zip-Datei schreiben")
Wenn ich die Eingabedatei in normale Ausgabedateien schreibe, funktioniert es. (siehe Kommentar "normale Datei schreiben")
Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class MeinZipper {
public static void main(String[] args) {
String eingDatei = "D:/Eigene Dateien 6/Computer/Java/Testdateien/testordner";
File f = new File(eingDatei);
if (f.exists()) {
if (f.isDirectory()) {
f = komprimiereVerzeichnis(f);
}
//weitere Verarbeitung mit f folgt noch
System.out.println("File existiert");
}else{
System.out.println("File existiert nicht");
}
}
public static File komprimiereVerzeichnis(File eingFile){
String dateiZip = "D:/Eigene Dateien 6/Computer/Java/Testdateien/ZipDatei.zip";
try {
String[] list = eingFile.list();
File zipFile = new File(dateiZip);
ZipOutputStream zipOS = new ZipOutputStream(new FileOutputStream(zipFile));
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
String eingDatei = eingFile.getParent()
+ System.getProperty("file.separator")
+ eingFile.getName()
+ System.getProperty("file.separator")
+ list[i];
File einzelneDatei = new File(eingDatei);
if (einzelneDatei.isFile()) {
FileInputStream fis = new FileInputStream(eingDatei);
byte[] b = new byte[(int) einzelneDatei.length()];
FileOutputStream fos = new FileOutputStream
("D:/Eigene Dateien 6/Computer/Java/Testdateien/NormalDatei" + i);
fis.read(b);
//normale Datei schreiben
fos.write(b);
//Zip-Datei schreiben
ZipEntry ze = new ZipEntry(einzelneDatei.getName());
zipOS.putNextEntry(ze);
zipOS.write(b);
fis.close();
fos.close();
}
}
zipOS.closeEntry();
return zipFile;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}