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

Java – Обновление даты последнего изменения файла

В Java мы можем использовать “Files.setlastmodifiedtime(путь, время файла)” для обновления даты последнего изменения файла.

В 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-ввод-вывод

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

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