我在java中写了一个小复制工具来复制我的USB记忆棒上的.mp3文件。复制新文件时,会保留一些文件属性,但不会保留创建时间。
要复制我使用的文件:
org.apache.commons.io.FileUtils
static void copyFile(File srcFile,File destFile,boolean preserveFileDate)
FileUtils.copyFile(sourceFile,newTargetFile,preserveFileDate);
所以我的问题是,有没有办法保留文件创建时间?如果没有,我想我设置了一个用windows robocopy复制的类。
发布于 2019-04-15 11:22:32
如果您使用的是Java 7+,则可以使用:
Files.copy(source, target, StandardCopyOption.COPY_ATTRIBUTES);
如果这不复制创建时间(它在我的机器上),您也可以手动设置它:
Path source = ...;
Path target = ...;
Files.copy(source, target, StandardCopyOption.COPY_ATTRIBUTES);
FileTime creationTime = (FileTime) Files.readAttributes(source, "creationTime").get("creationTime");
Files.setAttribute(target, "creationTime", creationTime);
发布于 2019-04-15 12:58:08
看看:http://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html#basic
可以获取和设置文件属性,如创建时间。
发布于 2019-12-15 12:39:47
自由设置文件时间的方法:
DateFormat format=new SimpleDateFormat("yyyy-m-d H:mm:ss");
Files.setAttribute(Paths.get("你的文件路径"), "creationTime", FileTime.fromMillis(format.parse("2020-1-1 0:00:00").getTime()));
Files.setAttribute(Paths.get("你的文件路径"), "lastAccessTime", FileTime.fromMillis(format.parse("2019-12-31 23:59:59").getTime()));
Files.setAttribute(Paths.get("你的文件路径"), "lastModifiedTime", FileTime.fromMillis(format.parse("2000-1-1 0:00:00").getTime()));
如果三个时间想设置成一样,那么:
FileTime time=FileTime.fromMillis(new SimpleDateFormat("yyyy-m-d H:mm:ss").parse("2020-1-1 0:00:00").getTime());
Files.setAttribute(Paths.get("你的文件路径"), "creationTime", time);
Files.setAttribute(Paths.get("你的文件路径"), "lastAccessTime", time);
Files.setAttribute(Paths.get("你的文件路径"), "lastModifiedTime", time);
https://stackoverflow.com/questions/-100006589
复制相似问题