В 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-ввод-вывод
Рекомендации
- Метаданные Oracle–файла
- basicfileатрибуты javadoc
- Как получить дату последнего изменения файла на Java
Оригинал: “https://mkyong.com/java/how-to-get-the-file-creation-date-in-java/”