Zipfile erstellen

magic_halli

Erfahrenes Mitglied
Hi,

ich erstelle mir in meinem Programm ein Zipfile, in welches ich alle *.dxf und dxf_filenames.xls in einem Verzeichnis reinpacken möchte. Das funktioniert aber bei nur fehlerfrei, wenn solche Dateien vorhanden sind. Ansonsten kommt die Meldung, dass ein Fehler beim erstellen den ZIP aufgetreten ist - es muss mindestes ein File vorhanden sein, welches zum Archiv hinzugefügt werden kann!
So sieht mein Code aus:
Java:
String path = curSession.GetCurrentDirectory();
    	String find = ".dxf";
    	String find2 = "dxf_filenames.xls";
    	String zipname = setFilename_PDF_gesamt(model);	//ermittelt Sachnr. der Oberbaugruppe - für zip-Filename
    	
    	int read = 0;
        FileInputStream in;
        byte[] data = new byte[1024];
        
    	try{
    		//Zip-Archiv mit Stream verbinden
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(path+zipname+"_Brennteile.zip"));
            //Archivierungs-Modus setzen
            out.setMethod(ZipOutputStream.DEFLATED);

            //dxf-Files in fileArray einlesen
    		File f = new File(path);
    		File[] fileArray = f.listFiles();
    		if(fileArray != null){
    			for(int i=0;i<fileArray.length;i++){
    				if(fileArray[i].getName().indexOf(find) != -1 || fileArray[i].getName().indexOf(find2) != -1){	
    					//Eintrag für neue Datei anlegen
    		            ZipEntry entry = new ZipEntry(fileArray[i].getName().toString());
    		            in = new FileInputStream(fileArray[i]);
    		            // Neuer Eintrag dem Archiv hinzufügen
    		            out.putNextEntry(entry);
    		            // Hinzufügen der Daten zum neuen Eintrag
    		            while((read = in.read(data, 0, 1024)) != -1)
    		              out.write(data, 0, read);
    		            //Neuen Eintrag abschließen
    		            out.closeEntry();
    		            in.close();
    				}
    			}
               out.closeEntry();
    		}
Ich bekomme echt ne Macke... Ich wollte einfach nur ne Abfrage hier noch reinbringen, dass wenn mind. eine dieser Dateien, die ins ZIP gepackt werden sollen, vorhanden ist, dann soll das ZIP erstellt werden... ansonsten soll nix passieren.
Ich bekomm das nicht gebacken - warum auch immer (ich seh´s einfach nicht)?! Könnt ihr mir kurz helfen?

Danke und Gruß.
 
Zuletzt bearbeitet:
dann ruf doch new ZipOutputStream(filename) erst auf wenn Du sicher bist, daß es auch mindestens einen Eintrag gibt.
Also erst
ZipOutputStream out=null;
und im if(find||find2) dann
if(out==null) new ZipOutputStream(filename);

beim schließen natürlich dann auch auf null abfragen

hoffe das ist dir jetzt nicht zu pseudocodemäßig ;)

Grüße
der Herbert
 
Zurück