Java An Methode übergeben

S

Sasku

Gast
Gute Morgen Community,


als erstes tut mir leid, dass ich so einen ungenauen namen für dieses Thema gefunden habe .. fällt aber nichts ein, wie man es sonst nennen könnte^^

So jetzt zum Problem, ich möchte ein kleines Backup Programm schreiben .. ich möchte / muss mehrere Dateien backupen .. so jetzt habe ich ein Array mit den Pfaden der Dateien und möchte es komplett an die Methode übergeben die das Zippen ( also das backup ausführen ) übernimmt .. Problem .. ich kann es nicht als String Array übergeben sondern muss es als File übergeben .. jetzt weiß ich nicht wie ich es übergeben soll ...

hier mal mein Code:


Code:
	private String s; 
	private String[] dateiInText;
	private String dateiInhalt = "";


	SimpleDateFormat time = new SimpleDateFormat("MM.dd.yyyy");										// Zeit wird für Zip formatiert
	Date currDate = new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());				// aktuelles Datum wird genommen 

	
	
	
	@Override
	public void actionPerformed(ActionEvent arg0) {													// Action Performed für den Speicherbutton 
		
		dateiInText = new String[oFlaeche.model.getSize()];											// String Array "dateiInText" wird auf die Länge der Liste gesetzt

		
		
		for ( int i = 0; i<oFlaeche.model.getSize(); i++) {											// For-Schleife ist für das zuweisen der Links in das String Array verantwortlich
			dateiInText[i] =  (String) oFlaeche.model.getElementAt(i);
			s =  (String) oFlaeche.model.getElementAt(i);
			System.out.println(i);
			System.out.println(dateiInText[i]);
			
		}
		

		
		
		speicherort_t = oFlaeche.speicherPfad_t.getText();											// schreibt den Pfad  der im Textfeld steht in speicherort_t
		zipFile(new File(dateiInText[0]), speicherort_t+"\\"+time.format(currDate)+".zip");						// ruft die Methode "zipFile" auf und setzt den Namen des ZipFiles
		
		
	}

	
	public static void zipFile(File inputFile, String zipFilePath) {								// Methode zum zippen der Dateien		
		
		try {
			FileOutputStream fileOutputStream = new FileOutputStream(zipFilePath);					// setzt den Pfad für das Zip-File
			ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
			
			ZipEntry zipEntry = new ZipEntry(inputFile.getName());
			zipOutputStream.putNextEntry(zipEntry);											 
			
			FileInputStream fileInputStream = new FileInputStream(inputFile);
			byte[] buf = new byte[1024];
			int bytesRead;
			
			while ((bytesRead = fileInputStream.read(buf)) > 0 ) {
				zipOutputStream.write(buf, 0, bytesRead);
			}																				
			
			zipOutputStream.closeEntry();
			
			zipOutputStream.close();
			fileOutputStream.close();
			
//			System.out.println("Regular file: " + inputFile.getCanonicalPath()+ " is zipped to archive: "+zipFilePath);
		} catch (IOException e) {
			e.printStackTrace();
		}



Die Dateien ( besser gesagt die Pfade ) bekomme ich aus einer Liste ^^


Also kann ich da jetzt das String Array "dateiInText[]" übergeben so dass es Strings bleiben?



mfg
 
Mach dir doch eine For-Schleife die über das Array geht, aus jedem Filepath-String ein File-Object macht und übergib dann dieses an die Methode. Danach hast du halt diverse zip-Dateien.

Wenn du jedoch alle Dateien in ein Zip haben möchtest, musst du die Methode zipFile() ändern. Hier ist ein einfaches Tutorial das dir helfen sollte und schnell zu verstehen ist: http://www.mkyong.com/java/how-to-compress-files-in-zip-format/

Ich habe damit noch nicht gearbeitet. Kann sein das er wenn die zip-datei schon existiert diese nur erweitert. Darauf aber keine Garantie, müsstest du probieren ;)

Wenn es dir nur darum geht das Array rüber zu bekommen musst du den Methodenkopf von zipFile() entsprechend nach String[] ändern und dann ebenfalls die Methode umschreiben
 
Zuletzt bearbeitet:
also ich seh bei dem link von dir keinen unterschied bei der Methode zu meiner ^^

nein es überschreibt die vorhandene zip nur ...

naja ich brauche das String-Array , damit ich die Pfade da rein schreibe damit ich beim nächsten mal wenn ich das Programm starte dann die Pfade wieder in der Liste habe .. bzw diese dann reinladen kann und dass ich mehrere Dateien eben zippen kann ^^
 
Sasku schrieb:
naja ich brauche das String-Array , damit ich die Pfade da rein schreibe damit ich beim nächsten mal wenn ich das Programm starte dann die Pfade wieder in der Liste habe .. bzw diese dann reinladen kann und dass ich mehrere Dateien eben zippen kann ^^

Das File-Objekt hat eine Methode zur Ausgabe des absoluten Pfades. Es gibt auch einen Konstruktor, der einen String (den absoluten Pfadnamen) akzeptiert. Es ist also kein Problem zwischen String und File zu konvertieren. An welcher Stelle im Programm die Konvertierung geschieht, ist Dir überlassen.
 
Warum schreibst du dir nicht ne eigene Methode, die das Arrayobjekt empfängt daraus die Pfade liest und in Fileobjekte übernimmt, die du dann innerhalb der Methode an die Methode zipFile() weiter gibt. Das Ganze in einer Schleife für die Anzahl der Pfade im Array.

Vielleicht wäre es angebracht das Ganze nicht im Array zu hinterlegen sondern einer List, dann kann die Anzahl der Dateien auch dynamisch sein.
 
danke .. habs jetzt von einem freund erklärt bekommen .. hat funktioniert ... bis klasse dann vor ca 1,5 stunden weg war ^^
 

Ähnliche Themen

S
Antworten
6
Aufrufe
1.354
S
Antworten
4
Aufrufe
996
S
Antworten
5
Aufrufe
1.294
S
S
Antworten
3
Aufrufe
1.598
Zurück
Oben