Luc1an0
Messages postés9Date d'inscriptiondimanche 20 mars 2005StatutMembreDernière intervention10 janvier 2007
-
10 janv. 2007 à 09:44
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
10 janv. 2007 à 18:19
Bonjour à tous,
pour vous situer le contexte, j'ai une application principale qui créer des dossiers chaque jour avec la date de ce meme jour. Une fois ce dossier crée, et les traitements effectués, je fait un :
monDossier.setLastModified(new Date()); pour etre sur de fixer la date du jour comme derniere date d'accès.
Je voudrais faire maintenant une fonction qui retrouve le premier dossier (la date la plus ancienne).
Je me suis fait une fonction qui me retourne une date au format "jj-mm-aaaa" avec SimpleDateFormat :
static String timeToString(long time)
{
Date dt = new Date(time);
SimpleDateFormat form = new SimpleDateFormat("hh-MM-yyyy");
String str = form.format(dt);
return str;
}
J'ai testé cette fonction et elle me renvoit des valeurs exactes.
Enfin voici une boucle qui liste un répertoire, et qui stocke dans un tableau de long, les dates de modification (pour faire un Arrays.sort(monTableau) derriere)
String homedir = "/home/backup/Client1/";
File f = new File(homedir);
File[] subfolders = f.listFiles();
long[] dates = new long[subfolders.length];
File tmpfile;
for (int i=0;i<=subfolders.length-1;i++)
{
dates[i] = subfolders[i].lastModified();
System.out.print(new Date(dates[i]));
System.out.print(" ");
System.out.println(timeToString(dates[i]));
}
voici le résultat :
Wed Jan 10 00:11:36 CET 2007 12-01-2007
Thu Jan 11 00:01:07 CET 2007 12-01-2007
Fri Jan 12 00:00:37 CET 2007 12-01-2007
Sat Jan 13 00:00:30 CET 2007 12-01-2007
Sun Jan 14 00:00:52 CET 2007 12-01-2007
Mon Jan 15 00:00:29 CET 2007 12-01-2007
Tue Jan 16 00:00:38 CET 2007 12-01-2007
Wed Jan 17 00:01:03 CET 2007 12-01-2007
Thu Jan 18 00:00:35 CET 2007 12-01-2007
Fri Jan 19 00:00:07 CET 2007 12-01-2007
Sat Jan 20 00:00:58 CET 2007 12-01-2007
Sun Jan 21 00:00:42 CET 2007 12-01-2007
Mon Jan 22 00:00:48 CET 2007 12-01-2007
Tue Jan 23 00:00:22 CET 2007 12-01-2007
(Si vous trouvez que les dates ont un peu d'avance c'est normal, j'ai changé la date de façon à reproduire des conditions réeles d'exécution)
Luc1an0
Messages postés9Date d'inscriptiondimanche 20 mars 2005StatutMembreDernière intervention10 janvier 2007 10 janv. 2007 à 10:07
J'ai résolu mon problème :
j'utilise cette commande sous Linux : ls -1tr /mon/Dossier/Racine qui va me trier les dossiers par ordre inverse de date de modification (premiere ligne = date la plus ancienne)
Je l'exécute avec un process, je récupère seulement la premiere ligne.
Voilou :)
Le bout de code si ca intéresse quelqu'un :
static String firstFolder(String name)
{
Runtime rt = Runtime.getRuntime();
try
{
Process p = rt.exec("ls -1tr /home/backup/Client1/");
InputStreamReader read = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(read);
String str = br.readLine();
p.destroy();
}
catch (Exception e) { }
return str;
}
(le chemin du dossier racine est écrit en dur ici....)