Рубрики
Без рубрики

Как получить дату создания файла на Java

В Java мы можем использовать атрибуты NIO Files.readAttributes, чтобы получить дату создания файла.

В Java (@начиная с 1.7) мы можем использовать NIO Файлы.readAttributes чтобы получить все метаданные файла , включая дату создания файла.

  Path file = Paths.get(fileName);

  BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);

  System.out.println("creationTime: " + attr.creationTime());
  // creationTime: 2020-07-20T09:29:54.627222Z

1. Файлы.Атрибуты чтения (NIO)

В этом примере используется Files.readAttributes для печати даты создания файла.

package com.mkyong.io.howto;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;

public class GetCreationDate1 {

    public static void main(String[] args) {

        String fileName = "/home/mkyong/test.txt";

        try {

            Path file = Paths.get(fileName);

            BasicFileAttributes attr =
                Files.readAttributes(file, BasicFileAttributes.class);

            System.out.println("creationTime: " + attr.creationTime());

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Выход

creationTime: 2020-07-20T09:29:54.627222Z

P.S Мы также можем использовать тот же код для получения даты создания каталога.

Дальнейшее чтение Прочитайте этот пример, чтобы преобразовать файловое время в другой формат даты и времени .

2. Файлы.Атрибут getAttribute (NIO)

Files.readAttributes вернет все метаданные файла, такие как время создания, время последнего изменения, размер файла и т.д.

Мы можем использовать Files.getAttribute для возврата определенных метаданных файла, например, CreationTime атрибут.

package com.mkyong.io.howto;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;

public class GetCreationDate2 {

    public static void main(String[] args) {

        String fileName = "/home/mkyong/test";

        try {

            Path file = Paths.get(fileName);

            FileTime creationTime =
                (FileTime) Files.getAttribute(file, "creationTime");

            System.out.println("creationTime: " + creationTime);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

3. До Java 7

В этом примере используется Runtime.getRuntime().exec для выполнения системной команды dir file/tc , чтобы указать дату создания файла в Windows и проанализировать содержимое вручную, чтобы извлечь дату создания файла.

P.S До Java 7 не существовало официального API для получения даты создания файла.

3.1 Просмотрите директора/тк команда в Windows.

C:\> dir c:\logfile.log /tc
 Volume in drive C has no label.
 Volume Serial Number is 0410-1EC3

 Directory of c:\

31/05/2010  08:05                14 logfile.log
               1 File(s)             14 bytes
               0 Dir(s)  35,389,460,480 bytes free


C:\> dir /?

Displays a list of files and subdirectories in a directory.

 //...
 /T          Controls which time field displayed or used for sorting
 timefield   C  Creation
             A  Last Access
             W  Last Written

3.2 Пример Java.

package com.mkyong.io.howto;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class GetFileCreation3 {

    public static void main(String[] args) {

        Process proc;
        BufferedReader br = null;

        try {

            proc = Runtime.getRuntime()
                  .exec("cmd /c dir c:\\logfile.log /tc");
                  
            br = new BufferedReader(
                  new InputStreamReader(proc.getInputStream()));

            String data = "";
            //it's quite stupid but work, ignore first 5 lines
            for (int i = 0; i < 6; i++) {
                data = br.readLine();
            }

            System.out.println("Extracted value : " + data);

            //split by space
            StringTokenizer st = new StringTokenizer(data);
            String date = st.nextToken(); //Get date
            String time = st.nextToken(); //Get time

            System.out.println("Creation Date  : " + date);
            System.out.println("Creation Time  : " + time);

        } catch (IOException e) {

            e.printStackTrace();

        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

Выход

Extracted value : 31/05/2010  08:05  14 logfile.log
Creation Date  : 31/05/2010
Creation Time  : 08:05

Приведенный выше код все еще работает, но он слишком сложен, чтобы получить время создания файла, если вы не можете обновить JVM; в противном случае, пожалуйста, используйте Java 7+NIO Files.readAttributes .

Скачать Исходный Код

$клон git $клон git

$cd java-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-get-the-file-creation-date-in-java/”