PsychedelicSpark
Grünschnabel
Hallo Miteinander
Ich habe ein Problem und komme einfach nicht mehr weiter...
Was das Programm tun soll:
Das Programm soll sämtliche Subverzeichnisse durchstöbern und alle Dateien - ausser die 2 neusten - in den Verzeichnissen löschen.
Mein Problem:
Durch ein paar Foren und sonstige Internetseiten entdeckte ich die Klasse File.
Mit dieser habe ich es auch geschafft, alle Unterverzeichnisse und auch die darin enthaltenen Dateien rekursiv aufzustöbern und auch bis auf die neuste zu löschen. So weit so gut.
Der Haken an der Sache ist jedoch, dass jeweils die 2 neusten Dateien erhalten bleiben sollen.
Ich habe es mal so probiert:
Ich habe das Gefühl, dass die "Liste" sich nicht aktualisiert, wenn eine Datei darin gelöscht wird.
So dachte ich mir, dass ich sie einfach aktualisieren kann (mit dem auskommentierten Befehl).
HA! Falsch gedacht.
Wenn ich den Befehl aufrufe, dann gibt es mitten im Ablauf einen "Index out of bounds" Error und das Programm macht auch nicht gerade das, was ich von ihm erwarte.
Ich habe es hunderte mal gedreht und gewendet, ohne Erfolg.
Ich hoffe, ihr könnt mir helfen :s
Ich habe ein Problem und komme einfach nicht mehr weiter...
Was das Programm tun soll:
Das Programm soll sämtliche Subverzeichnisse durchstöbern und alle Dateien - ausser die 2 neusten - in den Verzeichnissen löschen.
Mein Problem:
Durch ein paar Foren und sonstige Internetseiten entdeckte ich die Klasse File.
Mit dieser habe ich es auch geschafft, alle Unterverzeichnisse und auch die darin enthaltenen Dateien rekursiv aufzustöbern und auch bis auf die neuste zu löschen. So weit so gut.
Der Haken an der Sache ist jedoch, dass jeweils die 2 neusten Dateien erhalten bleiben sollen.
Ich habe es mal so probiert:
Java:
public class Main
{
public static File file = new File("C:/Tests");
public static void main(String[] args)
{
myMethod(file);
}
public static void myMethod(File directory)
{
File[] files = directory.listFiles();
if(files!=null)
{
for(int i=0; i<files.length; i++)
{
if(files[i].isDirectory()==true)
{
myMethod(files[i]);
}
else
{
// files = directory.listFiles(); // wenn ich die Liste aktualisiere, kriege ich mit der Zeit einen "Index out of bounds"
for(File file : files)
{
files = directory.listFiles();
if(file.lastModified()<files[i].lastModified() && files.length>2) //Wenn die letzte modifizierte Zeit kleiner (also älter) UND mehr als 2 Dateien vorhanden sind, löschen - was jedoch nicht zu funktionieren scheint...
file.delete();
}
}
}
}
else
System.out.println("Keene Berechtigung...");
}
}
Ich habe das Gefühl, dass die "Liste" sich nicht aktualisiert, wenn eine Datei darin gelöscht wird.
So dachte ich mir, dass ich sie einfach aktualisieren kann (mit dem auskommentierten Befehl).
HA! Falsch gedacht.
Wenn ich den Befehl aufrufe, dann gibt es mitten im Ablauf einen "Index out of bounds" Error und das Programm macht auch nicht gerade das, was ich von ihm erwarte.
Ich habe es hunderte mal gedreht und gewendet, ohne Erfolg.
Ich hoffe, ihr könnt mir helfen :s