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

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 21 août 2013 à 12:03
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 29 août 2013 à 11:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100088-recuperer-les-fichiers-modifies-aujourd-hui

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
Modifié par KX le 29/08/2013 à 12:01
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);
    }
}
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 août 2013 à 13:52
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.
lolyta1 Messages postés 19 Date d'inscription mardi 20 août 2013 Statut Membre Dernière intervention 3 juillet 2014 1
21 août 2013 à 12:03
Merci Cs_Julien

mais j'arrive pas à reproduire le même code sur une page jsp