Java查看主机上,指定文件最后修改时间是一个常见任务,这通常涉及到使用java.nio.file包中的类和方法。

基础概念:

  • 文件路径(File Path)
    • 文件路径:文件在文件系统的位置,可以是绝对路径或相对路径。
  • 文件属性(File Attributes)
    • 文件属性,文件的元数据,包括创建时间、最后修改时间、大小、权限等。
    • 在Java中,java.nio.file.attribute包提供了访问文件属性的接口。
  • Files 类
    • Files类是java.nio.file包中的一个工具类,提供了许多静态方法来操作文件和目录,包括读取文件属性。
  • FileTime 类
    • FileTime类表示文件的时间戳,包括创建时间、最后访问时间和最后修改时间。
    • FileTime可以与java.time包中的类(如InstantLocalDateTime等)进行转换,以便更容易地处理和格式化时间。

示例:
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.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
 
public class FileLastModifiedChecker { 
    /**
     * 获取文件修改时间
     * @param filePath 文件路径
     * @return 字符串
     * @throws IOException 文件不存在或无法读取属性
     */
    public static String getLastModifiedTime(String filePath) throws IOException {
        // 创建Path对象
        Path path = Paths.get(filePath);
 
        // 读取文件属性
        BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
 
        // 获取最后修改时间
        FileTime lastModifiedTime = attrs.lastModifiedTime();
 
        // 将FileTime转换为Instant
        Instant instant = lastModifiedTime.toInstant();
 
        // 将Instant转换为LocalDateTime(指定时区)
        // 这里使用系统默认时区,可以指定其他时区
        ZoneId zoneId = ZoneId.systemDefault();

        String readableTime = instant.atZone(zoneId).toString(); 
        return readableTime;
    }
 
    public static void main(String[] args) {
        String filePath = "path/to/your/file.txt"; // 文件路径
        try {
            String lastModifiedTime = getLastModifiedTime(filePath);
            System.out.println("文件 " + filePath + " 的最后修改时间是: " + lastModifiedTime);
        } catch (IOException e) {
            System.err.println("无法读取文件属性: " + e.getMessage());
        }
    }
}

 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐