Java Zip-Programm

LucasW

Mitglied
Hallo,
ich würde gerne ein Java-Programm schreiben um Ordner zu zippen. Jedoch bekomme ich immer die Fehlermeldung, dass der Zugriff auf den Ordner verweigert wird. Unter Eigenschaften des Ordners habe ich auch schon für alle Benutzer den Ordner freigegeben. Der neue Zip Ordner wird auch erstellt, jedoch ohne jeglichen Inhalt aus dem vorherigen Ordner.



Java:
    public static void main(String[] args)
    {
       
       
       
       
        String dst="C:\\Users\\werner\\Desktop\\Testordner.zip";
        String eins="C:\\Users\\werner\\Desktop\\Testordner";
        String[] array=new String[1];
        array[0]=eins;
     
      try {
        byte[] buf = new byte[4096];
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(dst));
        for (int i = 0; i < array.length; ++i)
        {
          String fname = array[i];
          System.out.println("adding " + fname);
          FileInputStream in = new FileInputStream(fname);
          out.putNextEntry(new ZipEntry(fname));
          int len;
          while ((len = in.read(buf)) > 0)
          {
            out.write(buf, 0, len);
          }
          in.close();
        }
        out.finish();
        out.close();
      } catch (IOException e) {
        System.err.println(e.toString());
     }
    }
 

Robat

Top Contributor
Ich meine mal gehört zu haben, dass man Directories mit ZipOutputStream nicht zippen kann.
Man muss den Ordner durchlaufen und jedes File einzeln zum zip-File hinzufügen.

Hast du mal versucht ob dein Code mit einer (bspw) einzelnen .txt-Datei funktioniert?

Edit: Schau vielleicht auch noch mal hier
 

LucasW

Mitglied
Ich habe nochmal einen anderen Code, bei welchem ich jedoch eine FileNotFoundException
Java:
 public static void main(String[] args)
    {
      
        z.zip("C:\\Users\\werner\\Desktop\\Testordner");
       
        try {
             BufferedInputStream origin = null;
             FileOutputStream dest = new FileOutputStream("C:\\Users\\werner\\Desktop\\Testordner.zip");
             ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
             //out.setMethod(ZipOutputStream.DEFLATED);
             byte data[] = new byte[BUFFER];
             // get a list of files from current directory
             File f = new File("C:\\Users\\werner\\Desktop\\Testordner");
            
             if(f.exists()&& !f.isDirectory())
             {
                 System.out.println(" Datei exisitiert");
             }
            
            
             String files[] = f.list();

             for (int i=0; i< files.length; i++)
             {
                System.out.println("Adding: "+files[i]);
                FileInputStream fi = new FileInputStream(files[i]);
                origin = new BufferedInputStream(fi, BUFFER);
                ZipEntry entry = new ZipEntry(files[i]);
                out.putNextEntry(entry);
                int count;
                while((count = origin.read(data, 0, BUFFER)) != -1)
                {
                    out.write(data, 0, count);
                }
                origin.close();
             }
             out.close();
            
          }
        catch(Exception e)
            {
              e.printStackTrace();
          }
       }
bekomme.
 

Robat

Top Contributor
Und an welcher Stelle bekommst du die FileNotFoundException? ;)

BTW: Folgender Code funktioniert bei mir tadellos:
Java:
String pathToZipFile = "C://Test//test.zip";
String pathToZip = "C://Test//toZip//test.txt";

try{
    File file = new File(pathToZipFile);
    try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(file)))
    {
        ZipEntry entry = new ZipEntry("test.txt");
        zipOut.putNextEntry(entry);

        try (FileInputStream in = new FileInputStream(new File(pathToZip)))
        {
            byte[] buffer = new byte[1024];
            int len = 0;
            while((len = in.read(buffer)) > 0)
                zipOut.write(buffer,0,len);
        }
        zipOut.closeEntry();
    }
} catch(IOException e){
    e.printStackTrace();
}
 

LucasW

Mitglied
Adding: desktop.ini
java.io.FileNotFoundException: desktop.ini (Das System kann die angegebene Datei nicht finden)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at Daten.Zippen.zip(Zippen.java:66)
at Daten.Zippen.main(Zippen.java:37)


Dies ist meine Konsolen Asugabe.
 

Robat

Top Contributor
Anstatt dir hier nur die Namen der Dateien zu holen, sollstest du dir lieber ein Array von Files holen á la File files[] : f.listFiles();.
Das kann dann so bleiben
und hier müsstest du dann entsprechend noch mit files[i].getName() arbeiten.

Dann sollte es gehen.
 

LucasW

Mitglied
Vielen Danke für deine Hilfe! Nun kommt jedoch dieser Fehler:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The constructor FileInputStream(File[]) is undefined

at Daten.Zippen.zip(Zippen.java:66)
at Daten.Zippen.main(Zippen.java:38)
 

LucasW

Mitglied
Vielen Dank für deine Hilfe! Jetzt ist nur noch das Problem, dass wenn ich den Zip-Ordner öffnen möchte er sagt, dass er ungültig sei. Aber da gucke ich erstmal wie ich das beheben kann.
 

LucasW

Mitglied
Java:
try {
             BufferedInputStream origin = null;
             FileOutputStream dest = new FileOutputStream("C:\\Users\\werner\\Desktop\\Testordner.zip");
             ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
             //out.setMethod(ZipOutputStream.DEFLATED);
             byte data[] = new byte[BUFFER];
             // get a list of files from current directory
             File f = new File("C:\\Users\\werner\\Desktop\\Testordner");
             System.out.println(f.getAbsolutePath());
             if(f.exists())
             {
                 System.out.println("Datei exisitiert:    " + f);
             }
            
             File files[] = f.listFiles();

             for (int i=0; i< files.length; i++)
             {
                System.out.println("Adding: "+files[i]);
                FileInputStream fi = new FileInputStream(files[i]);
                origin = new BufferedInputStream(fi, BUFFER);
                ZipEntry entry = new ZipEntry(files[i].getName());
                out.putNextEntry(entry);
                int count;
                while((count = origin.read(data, 0, BUFFER)) != -1)
                {
                    out.write(data, 0, count);
                }
                origin.close();
             }
             out.close();
            
          }
        catch(Exception e)
            {
              e.printStackTrace();
          }
       }
 

LucasW

Mitglied
Und dies ist mein Fehlercode:

java.io.FileNotFoundException: C:\Users\werner\Desktop\Testordner\Subord1 (Zugriff verweigert)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at Daten.Zippen.zip(Zippen.java:66)
at Daten.Zippen.main(Zippen.java:38)
 

Robat

Top Contributor
Selbes Problem wie vorhin.
Du kannst keine Ordner zippen, du musst über alles Files dort drin iterieren und sie einzeln adden.
Schau mal in einen meiner ersten Posts. Dort habe ich dir ein Link geschickt wo gezeigt wird, wie man sowas Deque lösen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Mail Programm Java Basics - Anfänger-Themen 4
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
M JAVA Programm in Website einbinden Java Basics - Anfänger-Themen 19
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
TimoN11 Mail Programm mit Java? Java Basics - Anfänger-Themen 1
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
G Java-Programm Terminal Java Basics - Anfänger-Themen 2
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
I Java Programm sieht wie exe aus. Java Basics - Anfänger-Themen 3
G Java-Programm weitergeben Java Basics - Anfänger-Themen 14
A Java-Programm läuft bei installierter JDK aber nicht mit JRE? Java Basics - Anfänger-Themen 5
W Java Programm mit API Anbindung Java Basics - Anfänger-Themen 2
D Java Programm mit JavaScript einbinden Java Basics - Anfänger-Themen 8
X Java Programm MacOS Java Basics - Anfänger-Themen 1
F Java Programm schließen Java Basics - Anfänger-Themen 1
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
B Mit Java anderes Java Programm starten Java Basics - Anfänger-Themen 3
J Java Programm Java Basics - Anfänger-Themen 29
B Java Eclipse Programm in einer Batch ausführen Java Basics - Anfänger-Themen 3
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
S Bestehendes Java Programm, einen festen Wert ändern Java Basics - Anfänger-Themen 17
C Input/Output Textdatei vom Java-Programm nicht geladen Java Basics - Anfänger-Themen 58
M Java Programm über Batch-Datei ausführen Java Basics - Anfänger-Themen 1
B Brauch Hilfe für Java Programm Java Basics - Anfänger-Themen 12
T CMD über Java-Programm aufrufen Java Basics - Anfänger-Themen 2
L Java-Programm kompilieren Java Basics - Anfänger-Themen 24
D Java BlueJ Programm wiederholen? Java Basics - Anfänger-Themen 6
M Java Programm: Lottozahlen Java Basics - Anfänger-Themen 4
I Java Programm Java Basics - Anfänger-Themen 12
F Java Programm öffnen Java Basics - Anfänger-Themen 3
A Erste Schritte Programm in Shell mit bestimmter Java-Version aufrufen Java Basics - Anfänger-Themen 10
J Pdf-Dokument im Java-Programm öffnen Java Basics - Anfänger-Themen 3
M Chat Programm in Java Java Basics - Anfänger-Themen 1
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
L Herunterladbares Java Programm in bestimmten Ordner speicher Java Basics - Anfänger-Themen 3
L Konsole öffnen und Java Programm darin ausführen Java Basics - Anfänger-Themen 4
C Programm JAR startet nicht - Could not create the Java Virtual Machine Java Basics - Anfänger-Themen 4
T CMD mit Java Programm öffnen? Java Basics - Anfänger-Themen 5
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
G Input/Output CSV-Datei über Java-Programm erstellen, Zeichensalat Java Basics - Anfänger-Themen 3
F Java-Programm gibt in Eingabeaufforderung nichts aus Java Basics - Anfänger-Themen 4
M Erste Schritte Java programm unable to access Java Basics - Anfänger-Themen 10
? Klassen einfacher Fehler in einem Java Programm. Java Basics - Anfänger-Themen 5
? Methoden Fehler in einfachem Java Programm. Java Basics - Anfänger-Themen 9
T Selbst erstellten Dateityp mit java Programm assoziieren? Java Basics - Anfänger-Themen 4
S Programm wie Java? Java Basics - Anfänger-Themen 10
M C++ programm (kompiliertes) aus java aufrufen Java Basics - Anfänger-Themen 7
A Eclipse - Java-Programm exportieren für Ubuntu TLS 10 Java Basics - Anfänger-Themen 9
F Java-Programm aus CMD ausführen mit Parametern Java Basics - Anfänger-Themen 7
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
P Probleme Java Programm Java Basics - Anfänger-Themen 6
MiMa Lauffähiges Java Programm erstellen Java Basics - Anfänger-Themen 4
J C++ Bitmanipulations-Programm in Java umwandeln Java Basics - Anfänger-Themen 10
N Java Programm im CMD Fenster öffnen, wie? Java Basics - Anfänger-Themen 17
S Externes Java Programm starten Java Basics - Anfänger-Themen 9
D Java Programm auf Kommandozeile durchführen Java Basics - Anfänger-Themen 12
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
M Kann Java Programm nicht starten Java Basics - Anfänger-Themen 7
V Java Chat Programm Problem mit IP Addresse Java Basics - Anfänger-Themen 7
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
B Mit Java-Programm Daten aus MySQL-Datenbank auslesen, lokal und nicht lokal. Java Basics - Anfänger-Themen 10
P Java Programm in Powerpoint Java Basics - Anfänger-Themen 5
Y Java Programm URL und String Vergleich! Java Basics - Anfänger-Themen 4
U Java-Programm auf einem Server starten Java Basics - Anfänger-Themen 33
M Kann mein Java Programm nicht starten Java Basics - Anfänger-Themen 6
G Kleine Java Programme aus Main Java Programm starten..... Java Basics - Anfänger-Themen 3
P Java Programm von außen aufrufen Java Basics - Anfänger-Themen 8
D Java programm durch vorgegebene bat ausführen Java Basics - Anfänger-Themen 3
Crashbreaker Eigene Java-Programm ohne hilfe des CMD starten Java Basics - Anfänger-Themen 11
S Interpreter-Fehler Java - Programm ausführen! Java Basics - Anfänger-Themen 12
B Grafische Oberfläche für Java-Programm Java Basics - Anfänger-Themen 5
T Mac OSX - Programm aus Java öffnen Java Basics - Anfänger-Themen 3
H Wie kann ich offline ein Java Programm abspeichern Java Basics - Anfänger-Themen 14
U Visual-Basic Programm mit Java steuern Java Basics - Anfänger-Themen 8
K In MySQL Select Variablen aus Java Programm benutzen Java Basics - Anfänger-Themen 8
J Java-Programm starten Java Basics - Anfänger-Themen 6
C java programm mit Texten, speichern und so Java Basics - Anfänger-Themen 3
W Java-Programm als Icon mit Doppelklick einfach öffnen ? Java Basics - Anfänger-Themen 3
B Java-Programm-Dienst sauber beenden Java Basics - Anfänger-Themen 6
P Java Programm geschrieben ... und nun? Java Basics - Anfänger-Themen 11
W Java Programm abändern Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben