selbst gezipptes File lässt sich nicht öffnen

mirjam

Mitglied
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")

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;
	}
}
 

Zurück
Oben