В Java мы можем использовать NIO Files.setlastmodifiedtime(путь, Время файла)
для обновления даты или времени последнего изменения файла.
Path path = Paths.get("/path/file"); LocalDate newLocalDate = LocalDate.of(1997, 12, 31); // year, month, dayOfMonth, hour, minute, second LocalDateTime newLocalDateTime = LocalDateTime.of(1999, 9, 30, 10, 30, 22); // convert LocalDateTime to Instant Instant instant = newLocalDateTime.toInstant(ZoneOffset.UTC); // convert LocalDate to Instant, need a time zone Instant instant = newLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); // convert instant to filetime // update last modified time of a file Files.setLastModifiedTime(path, FileTime.from(instant));
1. Java NIO – Обновить дату последнего изменения файла.
Для Java NIO java.nio.файл. Файлы
, мы можем использовать Files.setlastmodifiedtime()
для обновления даты последнего изменения файла.
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; import java.nio.file.attribute.FileTime; import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; public class UpdateLastModifiedTime { public static void main(String[] args) throws IOException { String fileName = "c:\\test\\google.png"; Path file = Paths.get(fileName); BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class); FileTime lastModifiedTime = attr.lastModifiedTime(); // print original last modified time System.out.println("[original] lastModifiedTime:" + lastModifiedTime); LocalDate newLocalDate = LocalDate.of(1998, 9, 30); // convert LocalDate to instant, need time zone Instant instant = newLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant(); // convert instant to filetime // update last modified time Files.setLastModifiedTime(file, FileTime.from(instant)); // read last modified time again FileTime newLastModifiedTime = Files.readAttributes(file, BasicFileAttributes.class).lastModifiedTime(); System.out.println("[updated] lastModifiedTime:" + newLastModifiedTime); } }
Выход
[original] lastModifiedTime:2020-12-01T07:23:48.405691Z [updated] lastModifiedTime:1998-09-29T16:00:00Z
Просмотрите сигнатуру метода Files.setlastmodifiedtime
, новое измененное время равно Время файла .
package java.nio.file; //... public static Path setLastModifiedTime(Path path, FileTime time) throws IOException { getFileAttributeView(path, BasicFileAttributeView.class) .setTimes(Objects.requireNonNull(time), null, null); return path; }
Мы можем использовать Файл Time.from(Мгновенный момент)
для преобразования Java 8 Мгновенный
к Время файла
.
Files.setLastModifiedTime(file, FileTime.from(instant));
или Время файла.frommillis (длинное значение)
для преобразования миллисекунд, прошедших с эпохи, в Время файла
.
FileTime now = FileTime.fromMillis(System.currentTimeMillis()); Files.setLastModifiedTime(path, now);
2. Устаревший ввод–вывод – Время последнего изменения файла.
Для устаревшего ввода-вывода java.io . Файл
, мы можем использовать File.setlastmodified()
для обновления даты последнего изменения.
package com.mkyong.io.howto; import java.io.File; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class UpdateLastModifiedTime2 { private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); public static void main(String[] args) throws ParseException { String fileName = "c:\\test\\google.png"; File file = new File(fileName); // print original last modified time System.out.println("[original] lastModifiedTime:" + sdf.format(file.lastModified())); //need convert the above date to milliseconds in long value Date newLastModified = sdf.parse("31/08/1998"); // update last modified date file.setLastModified(newLastModified.getTime()); //print the latest last modified date System.out.println("[updated] lastModifiedTime:" + sdf.format(file.lastModified())); } }
Выход
[original] lastModifiedTime:30/09/1998 [updated] lastModifiedTime:31/08/1998
Просмотрите сигнатуру метода File.setlastmodified
; аргумент длительное время
измеряется в миллисекундах с момента начала эпохи (00:00:00 по Гринвичу, 1 января 1970 года).
package java.io; //... public boolean setLastModified(long time) { if (time < 0) throw new IllegalArgumentException("Negative time"); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); } if (isInvalid()) { return false; } return fs.setLastModifiedTime(this, time); }
Скачать Исходный Код
$клон git $клон git
$cd java-ввод-вывод
Рекомендации
- Файловое время JavaDoc
- Как преобразовать локальную дату в мгновенную?
- Получить дату последнего изменения файла на Java
- Управление метаданными Файлов
- Википедия – Эпоха времени
- Как отформатировать файловое время в Java
Оригинал: “https://mkyong.com/java/how-to-change-the-file-last-modified-date-in-java/”