Dateien werden nicht in Zip gespeichert

LetsSebi

Mitglied
Java:
import java.io.*;
import java.util.zip.*;
import java.util.*;

public class ZipMachen {

    public static void zippen(){
        try{

            File f = new File("D\\Eigene Dateien\\Desktop\\alles\\Schule\\SWP\\HOFSTÄTTER\\Console");
            File [] dateien = f.listFiles();


            ZipOutputStream os = new ZipOutputStream( new FileOutputStream("ZipJava1.zip"));


            byte[] buffer = new byte[8]; //... ein bisschen klein für einen Buffer
            int len;

            os.setLevel(9); //compression level

            ZipEntry ze;
            File f_ori;

            //Dateien Zippen
            //Alle Dateien mit der For schleife durchen
            for(int i = 0; i < dateien.length; i++) {
                if (!dateien[i].isDirectory() && dateien[i].getName().endsWith(".java")) {
                    FileInputStream is = new FileInputStream(dateien[i].getName());
                    f_ori = new File(dateien[i].getName());
                    ze = new ZipEntry(dateien[i].getName());
                    ze.setSize(f_ori.length());
                    ze.setTime(f_ori.lastModified());  //sonst aktuelles Datei = File Datum in der Zip-Datei
                    os.putNextEntry(ze);
                    while (0 < (len = is.read(buffer)))
                        os.write(buffer, 0, len);
                    os.closeEntry();


                }
            }
            os.flush();
            os.close();
        }catch(IOException e){
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

    //Ue/HUE: s1chreibe eine klasse, die alle java-dateien im aktuellen verzeichnis in eine Zip-Datei packt
    //    Dateiname mit aktuellem Datum/Zeit Java_20210210_1248
    //
    //          V2: die Zip Datei wird danach automatisch ins Unterverzeichnis backup verschoben

    //***************************************
    public static void main(String[] args){
        zippen();

        }
    }
 
Code:
                    FileInputStream is = new FileInputStream(dateien[i].getName());
Die Zeile ist - nimm direkt den Array-Eintrag, also

Code:
                    FileInputStream is = new FileInputStream(dateien[i]);
Du bekommst nur den Namen der Datei, ohne Pfad. Da kann er die ja nicht finden, wenn die nicht gerade auch im lokalen Arbeitsverzeichnis liegt.
Das gilt für alle stellen, wo du auf getName zugreift um ein File Objekt zu erzuegen.

Du müsstest vermutlich auch Exceptions bekommen.
 

Zurück
Oben