# Dateien löschen die älter als das aktuelle Datum sind



## Bluedaishi (30. Jan 2014)

Hallo zusammen ,

ich habe folgendes problem ,

ich habe eine Datei die als Dateinamen Datum und Uhrzeit enthält (30012014-112635.ack)
nun möchte ich das die gelöscht wird die älter als die nächste Datei ist.


```
ack_dateiListe = curDir.list(fnFilter);
       
        String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        
                          String filedate = null;
                          
                          for(int a = 0; a < ack_dateiListe.length; a++){
                          
                              filedate = ack_dateiListe[a];
                              
                              String Tag = filedate.substring(0, 2);
                              String Monat = filedate.substring(2, 4);
                              String Jahr = filedate.substring(4, 8);
                              String Stunde = filedate.substring(9, 11);
                              String Minute = filedate.substring(11, 13);
                              String Sekunde = filedate.substring(13, 15);
                          
                              filedatetime = Jahr + "-" + Monat + "-" + Tag + " " + Stunde + ":" + Minute + ":" + Sekunde;
                              
                                                     
                              Date limitDate = date1.parse(date);
                              Date origDate = date1.parse(filedatetime);
                          
                          
                          
	    	          
	    	          // Wenn das Datum des Eintrags gleich und nach dem übergebenen Datum liegt,
	    	          // werden die Einträge zurück geschrieben.
	    	          if (limitDate.compareTo(origDate) <= 0) {
                              
                              System.out.println(ack_dateiListe[a]);

                             File ack = new File (ordner + "/" + ack_dateiListe[a]);
                             
                                ack.delete();
                            }
                                
                   }
```

das ist mein bis jetziger Ansatz aber das funktioniert leider nicht 

ich hoffe ihr könnt mir weiterhelfen

vielen dank


----------



## Bluedaishi (30. Jan 2014)

blödsinn was ich geschrieben nicht die systemzeit sondern die Älteste Datei von beiden 

sorry


----------



## VfL_Freak (30. Jan 2014)

Moin,



Bluedaishi hat gesagt.:


> aber das funktioniert leider nicht


Das ist KEINE ausreichende Fehlerbeschreibung :bahnhof:

Gruß
Klaus


----------



## Bluedaishi (30. Jan 2014)

ok es werden trotzdem beide Dateien gelöscht :-(


----------



## VfL_Freak (30. Jan 2014)

Bluedaishi hat gesagt.:


> ```
> ack_dateiListe = curDir.list(fnFilter);
> String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
> 
> ...


Was genau enthält denn "ack_dateiListe" ?
Was steht bei (1) nach der Zuweisung in "filedate" ?
Was genau steht bei (2) auf den Variablen "limitDate" rsp. "origDate" ?
Was genau wird bei (3) ausgegeben ?

Gruß
Klaus


----------



## Bluedaishi (30. Jan 2014)

also in der ach_dateiListe stehen die Dateinamen.ack drin

 das filedate enthält den String des Dateinamens damit er verglichen werden kann

   limitdate enthält darum und Uhrzeit aus dem String filedate.
   und origdate sollte eigentlich System darum Uhr zeit enthalten und wenn ich das mache sind ja beide 
   Dateien älter und werden gelöscht .

   ich möchte aber die aktuellere behalten und die ältere Datei sollte gelöscht werden


    das wollte ich damit erreichen nur ist mir klar geworden wenn ich die systemzeit aufrufe sind bei
    Dateien älter und werden gelöscht


----------



## VfL_Freak (30. Jan 2014)

die Betonung in meinen Fragen lag auf "was GENAU" ?? ;(

Lass Dir mal die einzelnen Inhalt ausgeben oder schau' mit 'nem Debugger drauf ...

Gruß
Klaus


----------



## Bluedaishi (30. Jan 2014)

ich darf nicht die systemzeit zum vergleichen nehmen ich muss irgendwie die beiden date mit     einander vergleichen und die ältere löschen

;(;(


----------



## max40 (30. Jan 2014)

```
try {
	DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy-hhmmss");
	
	String filename = "30012014-112635.ack";
	String sDate = filename.substring(0, 15);
	
	Date date = dateFormat.parse(sDate);
    System.out.println(date.toString());
    
} catch (ParseException e) {
    e.printStackTrace();
}
```

Mit 
	
	
	
	





```
date.getTime()
```
 kannst du dir die Millisekunden holen.
Das machst du mit der anderen Datei auch, die vergleichst du (kleiner Zahl gleich ältere Datei).


----------



## Bluedaishi (31. Jan 2014)

HI allen die mir geholfen haben erst einmal ein danke schön hab es hinbekommen 



                    So läuft es ein wandfei 



```
ack_dateiListe = curDir.list(fnFilter);
       
        SimpleDateFormat date = new SimpleDateFormat("ddMMyyyy-HHmmss");

                          String filedate = null;
                          
                          for(int a = 0; a < ack_dateiListe.length; a++){
                          
                              filedate = ack_dateiListe[a];
                             
                              filedate = filedate.replace(".ack", "");
                         
                              Date limitDate = date.parse(datetime);
                              Date origDate = date.parse(filedate);
                              
                              
                              if (0 < limitDate.compareTo(origDate)) {
                                  
                                  File ack = new File (ordner + "/" + ack_dateiListe[a]);
                                  
                                  ack.delete();
                              }
                              
                   }
                          
                          for(int a = 1; a <= 1000; a++){
                              
                              File ackn = new File ( ordner + "/" + a + ".ackn");
                              
                              if (ackn.exists()){
                                  ackn.delete();
                              }else{
                                  break;
                              }
                              
                          }
```


:applaus::applaus::applaus::applaus::applaus::applaus:

 Danke euch allen nochmal


----------

