# Zip Datei leer



## Rokko_11 (8. Feb 2010)

Hi!

ich habe ein Problem: Ich will ein Zip-Archiv erstellen. Habe nach einiger Zeit frustriertem Rumprogrammieren dann auch auf bereits fertige Quelltexte aus dem Internet (sowohl aus dem JavaCodebook als auch von der Problem beim erstellen von ZIP file - Java @ tutorials.de: Forum, Tutorial, Anleitung, Schulung & Hilfe Seite (unterer Eintrag) zurückgegriffen, aber dort habe ich genau die gleichen Probleme.
Und zwar ist das Zip-Archiv, welches ich bekomme, einfach leer. Es wird erzeugt und zeigt mir zwar vorher an, dass etwa 8 MB drin sein sollten, ist aber leer!

Was tun?

Hier nochmal der 1. Quelltext:


```
package src;

import java.io.BufferedInputStream;
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 ZipCreator {
	private String archiveName;
	private ZipOutputStream outputStream = null;

	public ZipCreator(String name) {
		archiveName = name;
	}

	public void create() throws FileNotFoundException {
		outputStream = new ZipOutputStream(new FileOutputStream(archiveName));
	}

	public void close() throws IOException {
		outputStream.close();
	}
	public void add(File f) throws IOException {
		String name = f.getCanonicalPath();
		long len = f.length();
		ZipEntry zipEntry = new ZipEntry(name);
		zipEntry.setSize(len);
		zipEntry.setTime(f.lastModified());
		zipEntry.setMethod(ZipEntry.DEFLATED);
		FileInputStream fis = new FileInputStream(f);
		BufferedInputStream bis = new BufferedInputStream(fis);
		outputStream.putNextEntry(zipEntry);
		byte[] buffer = new byte[2048];
		int num;
		while ((num = bis.read(buffer)) >= 0) {
			outputStream.write(buffer, 0, num);}
		bis.close();
		outputStream.closeEntry();
	}

	public static void main(String[] a) throws IOException {
		ZipCreator zip = new ZipCreator(
				"C:/Users/.../asdf.zip");
		zip.create();
		File asd = new File(
				"C:/Users/.../Vorlage2.dot");
		zip.add(asd);
		zip
				.add(new File(
						"C:/Users/.../final.doc"));
	
		zip.close();
	}
}
```



```
package src;



import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * @author Tom
 * 
 */
public class ZipCreator {

	static byte[] buffer = new byte[8192];
	static int len = 0;
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		ZipOutputStream zipOutputStream = new ZipOutputStream(
				new FileOutputStream("C:/Users/.../blabla.zip"));
		File file = new File("C:/Users/.../ordnername");
		treeWalkAndCompressTo(file, zipOutputStream);
		zipOutputStream.close();

	}

	private static void treeWalkAndCompressTo(File file,
			ZipOutputStream zipOutputStream) throws Exception {
		if (!file.isDirectory()) {
			ZipEntry entry = new ZipEntry(file.getAbsolutePath());
			zipOutputStream.putNextEntry(entry);

			FileInputStream fis = new FileInputStream(file);
			while ((len = fis.read(buffer)) > 0) {
				zipOutputStream.write(buffer, 0, len);
			}
			fis.close();
			zipOutputStream.closeEntry();
		} else {
			File[] children = file.listFiles();
			for (int i = 0; i < children.length; i++) {
				File child = children[i];
				treeWalkAndCompressTo(child, zipOutputStream);
			}
		}
	}
}
```

(Pfade natürlich abgekürzt).


----------



## SlaterB (8. Feb 2010)

das sind ja zwei Programme auf einmal, um welches geht es, funktioniert eins davon und das andere nicht?


----------



## Rokko_11 (8. Feb 2010)

Nein, keins funktioniert.
Normale zips kann ich öffnen. Auch selbsterstellte (Weißt schon... rechtsklick, zip-erstellen...)

Aber leider sind beide der Zips vermeindlich leer... Weder 7Zip noch Winzip noch der in Vista integrierte Zip-öffner schaffts 

Mir ist auch bewusst, dass von der Funktionalität beide Programme total verschieden sind... wenn ich weiß, wo das allgemeine Problem liegt, wäre mir super geholfen


----------



## SlaterB (9. Feb 2010)

nun gut, ich kann nur beide testen und dir sagen, dass sie bei mir laufen,
Anhaltspunkte wären für mich
- die Dateien: von anderen Programmen geöffnet, fehlende Leserechte, schlechter Dateiname (Leerzeichen) usw.,
versuche es neu mit 'c:/Temp/test.txt' usw.
- Java-Version
- Betriebssystem

nicht sehr ergiebig, ich weiß 

edit:
ach so, du bekommst schon eine Datei aber kannst sie nicht richtig öffnen, 
lade die doch mal hoch (aber nicht 8 MB, sondern 8kb) oder teste sie auf einem anderen PC


----------



## MQue (9. Feb 2010)

Ich hatte das Problem auch mal, dann hab ich die Stream ordentlich geschlossen (beim Decorierer- Muster damals von innen nach außen geschloßen) und vorher noch ein flush gemacht und dann gings.


----------

