Anmerkung: [Java] Identifizieren Sie Dateien mit einem Aktualisierungsdatum von 1 Tag oder weniger

Hintergrund

Eine Datei, die jede Sekunde aktualisiert wird, wird jeden Tag um Mitternacht mit einem neuen Datum erstellt. Ich wollte die neueste Datei identifizieren, die nicht aktualisiert wird. Ich werde den Code zu diesem Zeitpunkt aufschreiben. こんなイメージ.png

** Update-Datum abrufen **

Holen Sie sich das Änderungsdatum mit File.lastModified (). Der zurückgegebene Wert ist jedoch ein Long-Typ und eine Liste von Zahlen. Verwenden Sie daher SimpleDateFormat, damit er identifiziert werden kann. ** " JJJJ / MM / TT HH: MM: SS " ** wird im Format angezeigt.

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";             //Referenziertes Verzeichnis
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//Definition des Datums- und Uhrzeitformats
    File targetFile = new File(filepath);
    Long lastModified = targetFile.lastModified();   //LastModified, um das Änderungsdatum abzurufen()verwenden.
    String update_time = simpleDateFormat.format(lastModified);  //Formatieren Sie den Wert, der lange mit simpleDateFormat eingegangen ist
    System.out.println(update_time);
  }
}

Lass es uns laufen. Ich konnte das Datum und die Uhrzeit des Updates abrufen. 1.png

** Versuchen Sie, den Vorgang des Exportierens des Dateinamens zu kombinieren **

Verwenden Sie den zuvor geschriebenen Inhalt des Prüfverzeichnisses (https://qiita.com/tedkuma/items/4d0f66443b1cefdd2392), um die Namen und Änderungsdaten mehrerer Dateien aufzuschreiben.

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();          //Rufen Sie mit listFiles eine Liste der Dateien ab
        for(int i=0; i<list.length; i++) {
          String filename = list[i].getName();
          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//Definition des Datums- und Uhrzeitformats
          File targetFile = new File(filepath+filename);
          Long lastModified = targetFile.lastModified();
          String update_time = simpleDateFormat.format(lastModified);
          System.out.println(update_time+":"+filename);
        }
    }
}

Lass es uns laufen. Der Dateiname und das Aktualisierungsdatum könnten angezeigt werden. 2.png

** Zeit berechnen **

Verwenden Sie die Kalenderklasse, um die Zeit zu berechnen. (Import java.util.Calendar hinzugefügt;) Sie können die aktuelle Uhrzeit mit ** Calendar.getInstance () ** abrufen. Mit der Variablen .add (Calendar.DATE, 1); die Zeit nach 1 Tag, wenn Sie DATE nach 1 Minute in MINUTE ändern, Sie können die Uhrzeit auch vor einem Tag oder vor einer Minute abrufen, indem Sie das zweite Argument 1 in -1 ändern.

Da lastModified (langer Typ), der das Aktualisierungsdatum erhalten hat, nicht direkt in den Kalendertyp konvertiert werden kann Ich verwende den Datumstyp, der in einen der beiden konvertiert werden kann. (Import java.util.Date hinzugefügt;)

Sie können ** compareTo () verwenden, um die Größe ** zu vergleichen. Wenn Sie ** A ** schreiben. CompareTo (** B **) ** A > ** B ** Wenn A vorne ist, -1 ** A ** < B ** Wenn A später ist, 1 ** A ** = ** B ** Gleichzeitig wird 0 zurückgegeben.

** Identifizieren Sie Dateien, die innerhalb eines Tages aktualisiert wurden, anhand der aktualisierten Dateien **

Ich möchte nicht die aktualisierte Datei erhalten, die jede Sekunde aktualisiert wird Ich habe die if-Bedingung eingegeben, dass die Aktualisierungszeit innerhalb von 1 Tag liegt und 10 Minuten oder mehr vergangen sind.

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();//Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit mit der Kalenderklasse
        st.add(Calendar.DATE, -1);           //Holen Sie sich vor 1 Tag
        Date start = st.getTime();           //Zum Datum wechseln

        Calendar en = Calendar.getInstance();//Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit mit der Kalenderklasse
        en.add(Calendar.MINUTE, -10);        //Holen Sie sich vor 10 Minuten
        Date end = en.getTime();

        for(int i=0; i<list.length; i++) {  //Führen Sie die Verarbeitung für Dateien im Zielpfad aus
          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){//Vergleiche mit compareTo
            String update_time = simpleDateFormat.format(koushin);
            System.out.println(update_time+":"+filename);
          }
        }
    }
}

Lass es uns laufen. Ich konnte die Dateien innerhalb eines Tages nach dem Update abrufen, mit Ausnahme der zu aktualisierenden Dateien. 3.png

Recommended Posts

Anmerkung: [Java] Identifizieren Sie Dateien mit einem Aktualisierungsdatum von 1 Tag oder weniger
[Java1.8 +] Mit LocalDate das Datum des nächsten × Tages abrufen
Erster Touch der Files-Klasse (oder Java 8)
Java Kuche Day Memo
Initialisierung mit einer leeren Zeichenfolge für eine Instanz vom Typ Java-Zeichenfolge
Java-Lerntag 4
Java Study Memo 2 mit Progate