在Java中修改文件的时间戳是一个相对常见的需求,可能用于日志管理、文件同步或文件权限控制等场景,以下是一篇关于如何在Java中修改文件时间的详细指南。

了解文件时间属性
在Java中,文件的时间属性包括创建时间、最后修改时间和最后访问时间,以下是一些重要的类和方法,用于处理这些时间属性:
File类:提供了与文件系统交互的基本功能。FileTime类:用于表示文件的时间戳。Files类:提供了高级文件操作方法。
修改文件的最后修改时间
要修改文件的最后修改时间,可以使用以下步骤:
获取原始文件信息
你需要获取文件的当前最后修改时间,这可以通过以下代码实现:

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
public class ModifyFileTime {
public static void main(String[] args) throws Exception {
File file = new File("path/to/your/file.txt");
Path path = file.toPath();
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("Original Last Modified Time: " + attrs.lastModifiedTime());
}
}
设置新的最后修改时间
你可以设置一个新的最后修改时间,这可以通过Files.setLastModifiedTime方法实现:
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
public class ModifyFileTime {
public static void main(String[] args) throws Exception {
File file = new File("path/to/your/file.txt");
Path path = file.toPath();
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("Original Last Modified Time: " + attrs.lastModifiedTime());
// 设置新的最后修改时间
FileTime newTime = FileTime.fromMillis(System.currentTimeMillis());
Files.setLastModifiedTime(path, newTime);
System.out.println("New Last Modified Time: " + Files.getLastModifiedTime(path));
}
}
修改文件的创建时间
修改文件的创建时间稍微复杂一些,因为Java标准库中没有直接提供修改创建时间的方法,你可以通过以下步骤间接实现:
创建一个新的文件
创建一个新的文件,并设置其创建时间为目标时间。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Date;
import java.util.Set;
public class ModifyFileTime {
public static void main(String[] args) throws IOException {
String path = "path/to/your/new/file.txt";
Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxr-xr-x");
// 创建新文件并设置创建时间
Path newPath = Paths.get(path);
Files.createDirectories(newPath.getParent());
Files.setPosixFilePermissions(newPath, permissions);
Files.setAttribute(newPath, "creationTime", FileTime.fromMillis(new Date().getTime()));
System.out.println("New File Created with New Creation Time.");
}
}
重命名新文件为旧文件名
将新文件重命名为旧文件名,这将保留文件的创建时间。
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ModifyFileTime {
public static void main(String[] args) throws IOException {
String oldPath = "path/to/your/old/file.txt";
String newPath = "path/to/your/new/file.txt";
Path oldFile = Paths.get(oldPath);
Path newFile = Paths.get(newPath);
Files.move(newFile, oldFile);
System.out.println("File Renamed, and Creation Time is Preserved.");
}
}
就是在Java中修改文件时间的方法,需要注意的是,这些操作可能受到操作系统和文件系统的限制,在某些系统或文件上,这些方法可能无法正常工作。


















