in Zip kopieren -- Backup-Programm

Sasku

Mitglied
Moin Leute,

ich bin dabei ein Backup-Programm zu erstellen .. und nun möchte ich Dateien die ich ausgewählt habe und in einer Liste stehen dann jeweils in ein ZIP-File kopieren und beim nächsten Start des Programmes das Zip-File auslesen und die Dateien wieder in der Liste stehen haben ... Problem ist ich werde aus dem was in der Java-Docs steht überhaupt nicht schlau ..

wie erstelle ich nun ein Zip-File mit Java kann Sachen hineinkopieren und dann wieder auslesen was drinnen steht?

Java:
import java.awt.GridLayout;
import java.io.File;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class oFläche extends JFrame {
	
	// Endung t = textfield l = label b = button 
	
	
	static JTextField speicherPfad_t ;
	static JList list;
	static DefaultListModel model;
	static JButton add_b;
	static JButton savepath_b;

	static int index=-1;
	
	public oFläche(){	
		setSize(700, 500);
		getContentPane().setLayout(new GridLayout(1,1));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setTitle("Linked Control Panel");
		setResizable(false);
		
		JPanel content = new JPanel();										// Inhalts Panel
		content.setLayout(null);
		add(content);
		

		
		model = new DefaultListModel();
		
		
		list = new JList(model);											// List in der die Kritischen Dateien angezeigt werden
		list.setBounds(5,50,420,350);
		list.addListSelectionListener(new ItemListe());
		content.add(list);
		

		
		speicherPfad_t = new JTextField();						// Textfeld in dem der Speicherpfad abgebildet wird
		speicherPfad_t.setBounds(5, 10, 420, 30);
		content.add(speicherPfad_t);
		
		add_b = new JButton("Hinzufügen");									// Button zum Hinzufügen des Pfads der Dateien. 
		add_b.setBounds(435, 50, 120,30);
		add_b.addActionListener(new SearchListener(speicherPfad_t));
		content.add(add_b);
		
		savepath_b = new JButton("Speicherpfad");							// Button zum Angeben des Speicherpfades der Liste. 
		savepath_b.setBounds(435, 10, 120,30);
		savepath_b.addActionListener(new SearchListener(speicherPfad_t));
		content.add(savepath_b);
		
		JButton save_b = new JButton("Speichern");							// Button zum Speichern der Liste
		save_b.setBounds(570,10,100,70);
		save_b.addActionListener(null);
		content.add(save_b);
		
		

		JButton cancel_b = new JButton("Entfernen");
		cancel_b.setBounds(435,90,120,30);
		cancel_b.addActionListener(new EntListener());						// Listener zum Entfernen der Items aus der Liste  ListSelectionListener

		content.add(cancel_b);
		
		
		
		setVisible(true);
		
		
	}
	  public String pfadAuswahl(){
	 	   JFileChooser fileChooser = new JFileChooser();
	 	   int result = fileChooser.showOpenDialog(fileChooser);
	 	   if (result == JFileChooser.APPROVE_OPTION) {
	 	   File selectedFile = fileChooser.getSelectedFile();
	 	   return selectedFile.getAbsolutePath();}
	 	  return null;
	  }
}


das ist meine bisherige Oberfläche .. das ganze Kopieren und so soll erst passieren wenn ich auf den Speichern-Button klicke .. hab dafür einen ActionListener geschrieben .... allerdings habe ich hald noch keine Ahnung wie das mit den Zip-Files geht ..



mfg
 

Harry Kane

Top Contributor
Oder (ich trau mich kaum das vorzuschlagen) google. Der Treffer hier sieht ganz vielversprechend aus:
Java ZIP File Example | Examples Java Code Geeks
Edit: Es ist übrigens nie eine gute Idee, zuerst die Gui zu programmieren und sich erst dann mit der Logik die ausgeführt werden soll, auseinanderzusetzen. Andersrum wird ein Schuh draus: Lerne zuerst, wie das mit den Zipfiles funktioniert, dann stricke dir eine Gui drumherum.
 
Zuletzt bearbeitet:

Sasku

Mitglied
Oder (ich trau mich kaum das vorzuschlagen) google. Der Treffer hier sieht ganz vielversprechend aus:
Java ZIP File Example | Examples Java Code Geeks
Edit: Es ist übrigens nie eine gute Idee, zuerst die Gui zu programmieren und sich erst dann mit der Logik die ausgeführt werden soll, auseinanderzusetzen. Andersrum wird ein Schuh draus: Lerne zuerst, wie das mit den Zipfiles funktioniert, dann stricke dir eine Gui drumherum.


jaaa ich weis .. mache diesen "Fehler" allerdings immer wieder ... weis leider nicht warum ..

danke jedenfalls .. .sieht erstmal gut aus .. mal sehen wie ich es verarbeiten kann!
 

Shams

Aktives Mitglied
Ich habe hier mal was geschrieben, es ist ach nciht so elegant denke ich - eventuell kann Dich die zippen-Methide inspirieren.

Java:
package frageaktuell;

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

import javax.swing.JFileChooser;

public class Main {

	/**
	 * 
	 * @param pfade das sind die Pfade derzenigen Dateien, die Du in den Zippordner reintun wilst und die ausgesucht hast.
	 * @param zipName Das ist der dateiname des Zipordners, und zwar dessen absoluter Pfad.
	 */
	public void zippen(String[] pfade,String zipName){
		
		 FileInputStream inStream = null;
		 ZipOutputStream outStream = null;
		 ZipEntry ze = null;
		 
		 
	      try{
	    	  
              outStream = new ZipOutputStream(new FileOutputStream(zipName));
              
	      for(String pfad : pfade){
	    	  
              outStream.putNextEntry(new ZipEntry(pfad.substring(pfad.lastIndexOf('\\'))));
              
                                    inStream = new FileInputStream(pfad);
	                                byte[] buffer = new byte[1024];
	                                int bytesRead;
	                                
	                                while ((bytesRead = inStream.read(buffer)) > 0) {
	                                    outStream.write(buffer, 0, bytesRead);
	                                }
	       
	      }
	      
	      outStream.closeEntry();
          
	      }catch(IOException e){
	    	     e.printStackTrace();
	      
          
           }
	       	
		try {
			outStream.close();
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	
	//Diesen Auswahldialog habe ich ovn Dir:
    public String pfadAuswahl(){
    JFileChooser fileChooser = new JFileChooser();
    int result = fileChooser.showOpenDialog(fileChooser);
    if (result == JFileChooser.APPROVE_OPTION) {
    File selectedFile = fileChooser.getSelectedFile();
    
    if(selectedFile.isFile()){
    	return selectedFile.getAbsolutePath();	
    } 
    
    
    }

    return null;
    
    }
     
 public static void main(String[] args){
	 
	 Main m = new Main();
     
	//Absoluter Pfad des zu erschaffenden Zpordners, hierher sol gezippt werden.
	 String hierherSollGezipptWerden = "C:\\Users\\ich\\wohne\hier\\gezippt.zip";
	 
	 //Ich setze die Dateien mal in ein kleines Array.
	 String[] dateien = new String[2];
	 dateien[0]=m.pfadAuswahl();
	 dateien[1]=m.pfadAuswahl(); 
	 
	 //... und so stele ich mir die ZipMethode vor:
	 m.zippen(dateien,hierherSollGezipptWerden);

 }

}
 

Sasku

Mitglied
danke .. mal sehen wiie ich das einbauen kann .. aber eines verstehe ich immernoch nich .. wozu das Byte Array buffer und die while schleife danach sind? kannst du das bitte erklären? :)
 

Shams

Aktives Mitglied
Wegen der Frage mit dem Buffer und der Whileschleife - ich habe diese auskommentiert und festgestellt, dass die Inhalte der Dateien des zu zippenden Ordners ansonsten nicht in diejenigen Dateien geschrieben werden, die dann als Kopien derselben Dateien im gezippten Ordner sich befinden sollen.

Die Readmethode tut folgendes:

Die Einzelnen zu zippenden Dateien werden

public int read(byte[] b)
throws IOException

Reads up to b.length bytes of data from this input stream into an array of bytes. This method blocks until some input is available.

Overrides:
read in class InputStream
Parameters:
b - the buffer into which the data is read.
Returns:
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the file has been reached.
Throws:
IOException - if an I/O error occurs.
See Also:
InputStream.read(byte[], int, int)
(Quelle: Oracle Dokumentation)

Wenn es keine bytes mehr zu lesen gibt, dann wird die Whileschleife beendet, denn dann gibt read(byte[]) -1 zurück. Ansonsten wird byte für byte des Buffers ausgelesen und in den outputStream megabyteweise hineingeschrieben, das ist dann der Kopiervorgang der Dateien, welche aus dem zu zippenden Ordner (oder aus den zu zippenden Ordnern) ausgelesen und in den Zipordner geschrieben werden sollen. Ich hoffe, dass meine Erklärung korrekt war, ich bn auch kein Überflieger :)
 

Sasku

Mitglied
danke habs jetzt auch halbwegs verstanden .. :) funktioniert auf jedenfall super .. :D

jetzt muss ichs nur noch schaffen mehr als eine Datei gleichzeitig in das ZIP-File zu schreiben .. aber das bekomm ich auch noch hin .. wenn nich schreib ich wieder n neuen thread :p
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ordner kopieren Allgemeine Java-Themen 5
S Referenzdatentyp kopieren Allgemeine Java-Themen 5
I Wie Vektor-Grafik in die Zwischenablage kopieren? Allgemeine Java-Themen 2
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
M Dateien schneller kopieren Allgemeine Java-Themen 1
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
B In zwischenablage kopieren Allgemeine Java-Themen 2
F Datentypen Kopieren von Datentypen Allgemeine Java-Themen 10
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
N String ins Clipboard kopieren ohne makieren. Allgemeine Java-Themen 12
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
J PDF-Datei aus JAR-Archiv in Dateisystem kopieren Allgemeine Java-Themen 1
S Einen übergebenen String kopieren Allgemeine Java-Themen 3
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
P jar aus der jar kopieren XD Allgemeine Java-Themen 4
M Pakete in Ordner Kopieren Allgemeine Java-Themen 7
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
kodela Problem mit Kopieren über FileChannel Allgemeine Java-Themen 4
H Kopieren sehr langsam Allgemeine Java-Themen 5
I Java Ordner kopieren [Error] Allgemeine Java-Themen 6
E Files Kopieren Allgemeine Java-Themen 8
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
S exe Kopieren Allgemeine Java-Themen 11
E Ordner rekursiv kopieren Allgemeine Java-Themen 8
J Standard-I´/O kopieren Allgemeine Java-Themen 5
R kopieren von Dateien und Verzeichnissen - UNICODE? Allgemeine Java-Themen 4
S Kopieren von Datei führt zu Beschädigung Allgemeine Java-Themen 7
D markierten Text kopieren Allgemeine Java-Themen 2
O ist tiefes Kopieren sinnvoll? Allgemeine Java-Themen 14
B Zertifikat des Users speichern (serialisieren oder kopieren) Allgemeine Java-Themen 2
S Dateiinhalt kopieren Allgemeine Java-Themen 4
G Object mit clone kopieren Allgemeine Java-Themen 21
F Kopieren eines Objekts Allgemeine Java-Themen 3
D Kopieren und Einfügen Allgemeine Java-Themen 8
C Kopieren von Dateien die von einem anderen Programm verwendet werden? Allgemeine Java-Themen 7
E Blob Element kopieren Allgemeine Java-Themen 12
0din Websites kopieren Allgemeine Java-Themen 25
D mit java kopieren und umbenennen Allgemeine Java-Themen 6
X Objektsammlung clonen bzw. kopieren Allgemeine Java-Themen 5
A Beim Kopieren werden Bilder verfälscht Allgemeine Java-Themen 3
V Dateien kopieren Allgemeine Java-Themen 6
N Daten auf Server kopieren Allgemeine Java-Themen 6
Q Iterator kopieren Allgemeine Java-Themen 6
M Wie in Eclipse Quellcode incl. Zeilennummern kopieren? Allgemeine Java-Themen 6
G Daten von Excel kopieren - sinnvolle Datenstruktur? Allgemeine Java-Themen 3
P Eigene Klasse kopieren die auf sich selbst refferenziert Allgemeine Java-Themen 8
J Externes Programm - Konsolenausgabe kopieren/sichtbar machen Allgemeine Java-Themen 22
C File in Jar kopieren? Allgemeine Java-Themen 9
G ANT und Verzeichnisstruktur kopieren Allgemeine Java-Themen 2
G Datei löschen nach kopieren geht nicht Allgemeine Java-Themen 5
R Dateien lokal kopieren Allgemeine Java-Themen 6
P Objekt kopieren Allgemeine Java-Themen 8
hdi ArrayList kopieren? Allgemeine Java-Themen 8
G Datei kopieren Allgemeine Java-Themen 27
O Vektor kopieren (Inhalt, nicht Referenzen) Allgemeine Java-Themen 3
I Teile von ArrayList in eine andere kopieren? Allgemeine Java-Themen 2
V Datei kopieren und Datum erhalten Allgemeine Java-Themen 2
V Sich selbst kopieren (Jar- Datei) Allgemeine Java-Themen 3
G Code mit Zeilennummern kopieren? Allgemeine Java-Themen 3
S Stream ohne Referenz kopieren ? Allgemeine Java-Themen 4
M variable übergeben NICHT KOPIEREN Allgemeine Java-Themen 12
P String in Array kopieren Allgemeine Java-Themen 3
S Dateien auf Diskette kopieren Allgemeine Java-Themen 3
M Datei kopieren? Allgemeine Java-Themen 2
MQue Array in ein anderes Array kopieren Allgemeine Java-Themen 5
D aufruf beim kopieren Allgemeine Java-Themen 11
G Objekt dynamisch erstellen und Inhalte kopieren Allgemeine Java-Themen 6
K Datei kopieren Allgemeine Java-Themen 2
M 2-dimensionalen array schnell kopieren Allgemeine Java-Themen 6
T Text aus Java-Applet kopieren. Allgemeine Java-Themen 14
TheJavaKid Textformatierung bei Kopieren übernehmen Allgemeine Java-Themen 8
P Mehrzeiligen Text aus JTA lesen und in andere JTA kopieren Allgemeine Java-Themen 7
S Objekte kopieren Allgemeine Java-Themen 6
W Dateien über Clipboard kopieren Allgemeine Java-Themen 2
G InputStream kopieren? Allgemeine Java-Themen 6
G In Windows Datei kopieren Allgemeine Java-Themen 2
G Text aus Chatfenster kopieren Allgemeine Java-Themen 7
M Cache & Datein kopieren Allgemeine Java-Themen 3
R Problem bei Kopieren eines Ordners Allgemeine Java-Themen 13
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
m@nu Kopieren beschleunigen Allgemeine Java-Themen 3
T Musikdateien von CD Kopieren Allgemeine Java-Themen 4
M Bild in Zwischenablage kopieren? Allgemeine Java-Themen 7
bernd Problem beim kopieren! Allgemeine Java-Themen 2
G Dateien werden beim Kopieren zerstört Allgemeine Java-Themen 4
N Schnellste Art Dateien zu kopieren Allgemeine Java-Themen 16
U Dateien kopieren Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben