В 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/”