Java Exeption bei "doppelten" Dateinamen

S

Sasku

Gast
Hey Leute,

ich möchte ein backup-Programm schreiben und jetzt ist es so wenn ich zwei verschiedene "test.txt" habe, eine beispielsweise auf meinem Desktop und eine andere in einem Ordner.

Jetzt funktioniert dass komplette Programm nicht wenn ich versuche die beiden verschiedenen Dateien ( welche ja schließlich ja auch verschiedene pfade haben ) zu zippen. und ich habe keine Ahnung wieso das so ist. :/

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Formatter;
import java.util.List;
import java.util.Scanner;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;


public class SaveListener implements ActionListener {

	public static String speicherort_t;
	private String[] dateiInText; 
	private static File[] files;
	static Scanner s;
	static Scanner leser;
	static List<String> dateiInhalt;
	static ArrayList<String> list = new ArrayList<String>();
	Formatter x = null;

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

	
	@Override
	public void actionPerformed(ActionEvent arg0) {
		
		dateiInText = new String[oFlaeche.model.getSize()];											// String Array "dateiInText" wird auf die Länge der Liste gesetzt
		dateiInhalt = new ArrayList<String>();

				
				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);
	
					System.out.println(i);
					System.out.println(dateiInText[i]);
					
					}
			
				
				File f = new File ("C:\\Users\\DB00033159\\Desktop\\TestText\\test.txt");			// ist die txt datei in der die schon gesicherten links der dateien steht
				
				
				
				
			
				
				if (f.exists()) {
					
					
					try {																			// bis x.close(); ist dafür verantwortlich dass die links in eine txt-datei geschrieben werden
						leser = new Scanner(f);														//  damit sie beim nächsten start ausgelesen werden kann. 
						while ( leser.hasNext()){	
							dateiInhalt.add(leser.nextLine()) ;
						}
					
						x = new Formatter(f); 
						
						for(int i=0; i<dateiInhalt.size(); i++){
							x.format("%s%n", dateiInhalt.get(i));
						}
						
						for (int i = 0; i<oFlaeche.model.getSize();i++) {	
							
								x.format("%s%n", dateiInText[i]);
							
						}
						
					} catch (FileNotFoundException e) {
						
						e.printStackTrace();
					}
				
				} else {
					try {
						
					
						x = new Formatter(f); 
						
						for(int i=0; i<dateiInhalt.size(); i++){
							x.format("%s%n", dateiInhalt.get(i));
						}
						
						for (int i = 0; i<oFlaeche.model.getSize();i++) {	
							
								x.format("%s%n", dateiInText[i]);
							
						}
				
					} catch (FileNotFoundException e) {
						
						e.printStackTrace();
					}
				}
				x.close();
			    
			  
	
		
		
		
		files = new File[dateiInText.length];														// nimmt die pfade und übergibt sie später an die Methode zipFile damit sie gezippt werden
		for ( int i = 0; i<dateiInText.length;i++) {
			files[i] = new File(dateiInText[i]);
			
		}

				
		speicherort_t = oFlaeche.speicherPfad_t.getText();
		zipFile(files, speicherort_t+"\\"+time.format(currDate)+".zip");							// ruft die Methode "zipFile" auf und setzt den Namen des ZipFiles

		
		
	}

	public static void zipFile(File[] files, String zipFilePath) {									// methode zum zippen 
		
		
		
		try {
			FileOutputStream fileOutputStream = new FileOutputStream(zipFilePath);
			ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
			
			for ( int i = 0; i<files.length;i++	) {

			ZipEntry zipEntry = new ZipEntry(files[i].getName());
													 
			zipOutputStream.putNextEntry(zipEntry);	
			
			fileInputStream = new FileInputStream(files[i]);
			byte[] buf = new byte[1024];
			int bytesRead;
			
			while ((bytesRead = fileInputStream.read(buf)) > 0 ) {
				zipOutputStream.write(buf, 0, bytesRead);
			}				
			zipOutputStream.closeEntry();
			}
			
			
			zipOutputStream.close();
			fileOutputStream.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	
		
	}																							// methode zipFile Ende
			
	

	

} 																								// Klasse Ende


das ist die Klasse SaveListener, welcher ausgeführt wird wenn der button speichern gedrückt wird.

Was kann ich jetzt machen, damit der das ganze dennoch zippt und alles funktioniert? ..
Ergänzung ()

achja .. sry dass der code da so verschoben aussieht .. das macht CB automatisch .. ;/
 
ja ich weis schon .. bringt mir aber herzlich wenig ..

weil ich ja mehrere Dateien sichern möchte .. und wenn jetzt ein Dateiname doppelt vorkommt dann funktionierts nich ... und ich kann dort nicht jedesmal die komplette ordnerstruktur sichern .. das wäre zu viel ^^
und jeweils einen ordner für jede einzelne Datei is auch Schwachsinn ..
 
Datei umbenennen?
 
Sasku schrieb:
Jetzt funktioniert dass komplette Programm nicht wenn ich versuche die beiden verschiedenen Dateien ( welche ja schließlich ja auch verschiedene pfade haben)

Den Pfad ignorierst Du aber. Von daher erzeugen gleiche Dateinamen einen Konflikt.
 
Zurück
Oben