Récupérer les fichiers modifiés aujourd'hui

Soyez le premier à donner votre avis sur cette source.

Vue 2 844 fois - Téléchargée 600 fois

Description

Je poste cette source suite à une question sur le forum : comment récupérer
les fichiers modifiés aujourd'hui
la solution pose deux difficultés :
- accéder au système de fichier
- gérer les dates

Pour lister les fichiers qui datent de la date du jour, on va utiliser l'objet
java.io.FileFilter qui nous permet de réaliser des filtres sur les fichiers.

Etape 1 : on créé le filtre
Le code est le suivant :
 
import java.io.File; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import java.io.FileFilter; 

public class FiltreFichierDuJour implements FileFilter { 

 @Override 
 public boolean accept(File f) { 
  long dateLong=f.lastModified(); 
  SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
  String dateModif=sdf.format(dateLong); 
  String dateAujourdhui=sdf.format(new Date()); 
  return dateModif.equals(dateAujourdhui); 
 } 
  
} 


Etape2 : on utilise la méthode listFiles de l'objet File
Le code est le suivant :
 
File dossier = new File("D:\\dossier\\"); 
for(File f : dossier.listFiles(new FiltreFichierDuJour())){ 
 System.out.println(f.getName()); 
} 

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

lolyta1
Messages postés
19
Date d'inscription
mardi 20 août 2013
Statut
Membre
Dernière intervention
3 juillet 2014
1 -
Merci Cs_Julien

mais j'arrive pas à reproduire le même code sur une page jsp
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
C'est normal, le fichier doit être côté serveur, soit il est déjà présent côté serveur et dans ce cas là, il fonctionnera soit tu dois d'abord uploader ce fichier vers le serveur.
KX
Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
88 -
Je trouve très moyen de comparer deux dates par la représentation de leurs String. En plus tel que c'est fait, les objets SimpleDateFormat sdf, et Date dateAujourdhui sont recréés à chaque accept, ça veut dire pour chaque fichier à analyser, or la date ne va pas changer d'un fichier à l'autre, et encore moins le format !

J'améliorerai en faisant comme ceci, le constructeur initialise deux dates (le minuit de début de journée, et le minuit de fin de journée, pas forcément le même jour d'ailleurs...) et on vérifie que la date du fichier est bien entre les deux.

import java.io.File;
import java.io.FileFilter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateFileFilter implements FileFilter {
    private final Calendar midnightBefore;
    private final Calendar midnightAfter;

    public DateFileFilter() {
        this(null, null);
    }

    public DateFileFilter(Date date) {
        this(date, date);
    }

    public DateFileFilter(Date begin, Date end) {
        midnightBefore = new GregorianCalendar();
        midnightAfter = new GregorianCalendar();

        if (begin != null)
            midnightBefore.setTime(begin);

        if (end != null)
            midnightAfter.setTime(end);

        midnightBefore.set(Calendar.HOUR, 0);
        midnightBefore.set(Calendar.MINUTE, 0);
        midnightBefore.set(Calendar.SECOND, 0);
        midnightBefore.set(Calendar.MILLISECOND, 0);

        midnightAfter.set(Calendar.HOUR, 23);
        midnightAfter.set(Calendar.MINUTE, 59);
        midnightAfter.set(Calendar.SECOND, 59);
        midnightAfter.set(Calendar.MILLISECOND, 999);
    }

    @Override
    public boolean accept(File f) {
        GregorianCalendar calendar = new GregorianCalendar();
        calendar.setTimeInMillis(f.lastModified());
        return calendar.after(midnightBefore) && calendar.before(midnightAfter);
    }
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.