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à.

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.

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.

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é.
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.

Recommended Posts