Mémo: [Java] Identifiez les fichiers dont la date de mise à jour est inférieure ou égale à 1 jour

Contexte

Un fichier mis à jour toutes les secondes est créé chaque jour à minuit avec une nouvelle date. Je voulais identifier le dernier fichier autre que celui en cours de mise à jour. J'écrirai le code à ce moment-là. こんなイメージ.png

** Obtenir la date de mise à jour **

Obtenez la date de modification avec File.lastModified (). Cependant, la valeur renvoyée est un type Long et une liste de nombres, utilisez donc SimpleDateFormat pour pouvoir l'identifier. ** " aaaa / MM / jj HH: mm: ss " ** s'affiche dans le format.

test.java


import java.io.File;
import java.text.SimpleDateFormat;

public class test{

  public static void main(String[] args){

    String filepath = "C:/tedkuma/BOX/20180729.csv";             //Répertoire référencé
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//Définition du format de la date et de l'heure
    File targetFile = new File(filepath);
    Long lastModified = targetFile.lastModified();   //LastModified pour obtenir la date de modification()utilisation.
    String update_time = simpleDateFormat.format(lastModified);  //Formatez la valeur fournie avec simpleDateFormat
    System.out.println(update_time);
  }
}

Lançons-le. J'ai pu obtenir la date et l'heure de la mise à jour. 1.png

** Essayez de combiner avec le processus d'exportation du nom de fichier **

Utilisez le contenu du répertoire de vérification précédemment écrit (https://qiita.com/tedkuma/items/4d0f66443b1cefdd2392) pour noter les noms et les dates de modification de plusieurs fichiers.

test.java


import java.io.File;
import java.text.SimpleDateFormat;

public class test
{
    public static void main(String[] args)
    {
        String filepath = "C:/tedkuma/BOX/";

        File dir = new File(filepath);
        File[] list = dir.listFiles();          //Obtenir une liste de fichiers à l'aide de listFiles
        for(int i=0; i<list.length; i++) {
          String filename = list[i].getName();
          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//Définition du format de la date et de l'heure
          File targetFile = new File(filepath+filename);
          Long lastModified = targetFile.lastModified();
          String update_time = simpleDateFormat.format(lastModified);
          System.out.println(update_time+":"+filename);
        }
    }
}

Lançons-le. Le nom du fichier et la date de mise à jour peuvent être affichés. 2.png

** Calculer le temps **

Utilisez la classe Calendar pour calculer l'heure. (Ajout de l'importation java.util.Calendar;) Vous pouvez obtenir l'heure actuelle avec ** Calendar.getInstance () **. 1 jour plus tard avec la variable .add (Calendar.DATE, 1);, 1 minute plus tard avec DATE changé en MINUTE, Vous pouvez également obtenir l'heure d'il y a un jour ou une minute en remplaçant le deuxième argument 1 par -1.

Depuis le lastModified (type long) qui a obtenu la date de mise à jour ne peut pas être directement converti en type de calendrier J'utilise le type de date qui peut être converti en l'un ou l'autre. (Ajout de l'importation java.util.Date;)

Vous pouvez utiliser ** compareTo () pour comparer la taille **. Lorsque vous écrivez ** A . CompareTo ( B **) ** A > ** B ** Quand A est devant, -1 ** A ** < B ** Quand A est plus tard, 1 ** A ** = ** B ** En même temps, 0 est renvoyé.

** Identifiez les fichiers qui ont été mis à jour dans un délai d'un jour à partir des fichiers mis à jour **

Je ne veux pas obtenir le fichier mis à jour qui est mis à jour toutes les secondes J'ai mis dans la condition if que l'heure de mise à jour est dans 1 jour et 10 minutes ou plus se sont écoulées.

test.java


import java.io.File;
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class test{

    public static void main(String[] args){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        String filepath = "C:/tedkuma/BOX/";

        File dir = new File(filepath);
        File[] list = dir.listFiles();

        Calendar st = Calendar.getInstance();//Obtenez la date et l'heure actuelles avec la classe Calendar
        st.add(Calendar.DATE, -1);           //Obtenir il y a 1 jour
        Date start = st.getTime();           //Changer de date

        Calendar en = Calendar.getInstance();//Obtenez la date et l'heure actuelles avec la classe Calendar
        en.add(Calendar.MINUTE, -10);        //Obtenir il y a 10 minutes
        Date end = en.getTime();

        for(int i=0; i<list.length; i++) {  //Exécuter le traitement des fichiers dans le chemin cible
          String filename = list[i].getName();
          File targetFile = new File(filepath+filename);
          Long lastModified = targetFile.lastModified();
          Date koushin = new Date(lastModified);

          if(start.compareTo(koushin)<0 && end.compareTo(koushin)>0){//Comparer avec comparer
            String update_time = simpleDateFormat.format(koushin);
            System.out.println(update_time+":"+filename);
          }
        }
    }
}

Lançons-le. J'ai pu obtenir les fichiers dans un délai d'un jour après la mise à jour, à l'exclusion des fichiers en cours de mise à jour. 3.png

Recommended Posts

Mémo: [Java] Identifiez les fichiers dont la date de mise à jour est inférieure ou égale à 1 jour
[Java1.8 +] Obtenez la date du jour × suivant avec LocalDate
Première touche de la classe Files (ou Java 8)
Mémo Java Kuche Day
Initialisation avec une chaîne vide vers une instance de type Java String
java learning day 4
Mémo d'étude Java 2 avec Progate