- Определить дату создания файла в Java
- 2. Files.getAttribute
- 3. Files.readAttributes
- 4. Вывод
- Популярные посты
- Определить дату создания файла в Java
- 2. Файлы.getAttribute
- 3. Файлы.readAttributes
- 4. Вывод
- Определение даты создания файла в Java
- 1. Обзор
- 2. Files.getAttribute
- 3. Файлы.Атрибуты чтения
- 4. Заключение
- Читайте ещё по теме:
- How to get proper file creation date of file?
- 3 Answers 3
- Further Reading
- Как получить дату создания файла на Java
- 1. Файлы.Атрибуты чтения (NIO)
- 2. Файлы.Атрибут getAttribute (NIO)
- 3. До Java 7
- Скачать Исходный Код
- Рекомендации
Определить дату создания файла в Java
В JDK 7 появилась возможность получать дату создания файла.
В этом руководстве мы узнаем, как получить к нему доступ через java.nio .
2. Files.getAttribute
Один из способов узнать дату создания файла — использовать метод Files.getAttribute с заданным путем :
Тип CreationTime является FileTime , но из — за того , что метод возвращает Object, мы должны бросить его .
FileTime содержит значение даты как атрибут отметки времени. Например, его можно преобразовать в Instant с помощью метода toInstant () .
Если файловая система не хранит дату создания файла, метод вернет null .
3. Files.readAttributes
Другой способ получить дату создания — использовать Files.readAttributes, который для заданного пути возвращает все основные атрибуты файла сразу:
Метод возвращает BasicFileAttributes, который мы можем использовать для получения основных атрибутов файла. Метод createTime () возвращает дату создания файла как FileTime .
На этот раз, если файловая система не хранит дату создания файла, метод вернет дату последнего изменения . Если дата последнего изменения также не сохранена, то будет возвращена эпоха (01.01.1970).
4. Вывод
В этом руководстве мы узнали, как определить дату создания файла в Java. В частности, мы узнали, что можем сделать это с помощью Files.getAttribute и Files.readAttributes .
Как всегда, код примеров доступен на GitHub.
Популярные посты
Определить дату создания файла в Java
В JDK 7 появилась возможность получить дату создания файла.
В этом уроке мы узнаем, как получить к нему доступ через java.nio .
2. Файлы.getAttribute
Один из способов получить дату создания файла — использовать метод Files.getAttribute с заданным Path :
try FileTime creationTime = (FileTime) Files.getAttribute(path, "creationTime"); > catch (IOException ex) // handle exception >
Тип createTime — FileTime , но из-за того, что метод возвращает Object, мы должны его привести .
FileTime содержит значение даты в качестве атрибута метки времени. Например, его можно преобразовать в Instant с помощью метода toInstant() .
Если файловая система не хранит дату создания файла, метод вернет значение null .
3. Файлы.readAttributes
Другой способ получить дату создания — Files.readAttributes , который для заданного пути сразу возвращает все основные атрибуты файла:
try BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class); FileTime fileTime = attr.creationTime(); > catch (IOException ex) // handle exception >
Метод возвращает BasicFileAttributes, которые мы можем использовать для получения основных атрибутов файла. Метод createTime () возвращает дату создания файла как FileTime .
На этот раз, если файловая система не хранит дату создания файла, метод вернет дату последнего изменения . Если дата последнего изменения также не сохраняется, то будет возвращена эпоха (01.01.1970).
4. Вывод
В этом уроке мы узнали, как определить дату создания файла в Java. В частности, мы узнали, что можем сделать это с помощью Files.getAttribute и Files.readAttributes .
Как всегда, код для примеров доступен на GitHub .
Определение даты создания файла в Java
JDK 7 представил способ просмотра даты создания файла. Узнайте, что это такое.
1. Обзор
В JDK 7 появилась возможность получить дату создания файла.
В этом уроке мы узнаем, как получить к нему доступ через java.nio .
2. Files.getAttribute
Один из способов получить дату создания файла – использовать метод Files.getAttribute с заданным Путем :
Тип CreationTime – это FileTime , но из-за того, что метод возвращает Объект, мы должны привести его .
FileTime содержит значение даты в качестве атрибута метки времени. Например, он может быть преобразован в Instant с помощью метода to Instant () .
Если файловая система не хранит дату создания файла, то метод вернет null .
3. Файлы.Атрибуты чтения
Другой способ получить дату создания-с помощью Files.readAttributes , который для заданного Пути возвращает все основные атрибуты файла сразу:
Метод возвращает атрибуты BasicFileAttributes, которые мы можем использовать для получения основных атрибутов файла. Метод creation Time() возвращает дату создания файла как File Time .
На этот раз, если файловая система не хранит дату создания файла, то метод вернет дату последнего изменения . Если дата последнего изменения также не сохранена, то будет возвращена эпоха (01.01.1970).
4. Заключение
В этом уроке мы узнали, как определить дату создания файла в Java. В частности, мы узнали, что можем сделать это с помощью Files.getAttribute и Files.readAttributes .
Как всегда, код для примеров доступен на GitHub .
Читайте ещё по теме:
How to get proper file creation date of file?
I need not last modification time and not last file accessed time, but file creation time. I have not found information about this. Maybe some libs?
Path p = Paths.get(f.getAbsoluteFile().toURI()); BasicFileAttributes view = null; try < view = Files.getFileAttributeView(p, BasicFileAttributeView.class).readAttributes(); >catch (IOException e) < // TODO Auto-generated catch block e.printStackTrace(); >FileTime creationTime = view.creationTime();
In this code creation time is not valid and return today date. Operation System: Windows 7 Java: SE-1.7
3 Answers 3
As yshavit said, not all operating systems record the date created. However, you should be able to use java.nio.file to determine this information on operating systems that do have this functionality — see the documentation for files.getAttribute — note that BasicFileAttributeView has a field for creationTime .
You can use FileSystems.getDefault(); to determine what FileAttributeView s are supported on the current operating system.
Files.getAttribute(path, «basic:createdAt»); will return a FileTime object with the date the file was created on a system that supports BasicFileAttributeView . You’ll have to convert it to a java.util.Date object, but I’ll let you figure that out on your own.
Further Reading
- NIO API for getAttribute()
- NIO API for BasicFileAttributeView
- A tutorial for using readAttributes()
- A comprehensive tutorial on using FileAttributes
- Another StackOverflow thread on the same topic
Как получить дату создания файла на 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
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 .