Java 处理文件的时候,修改文件的更新时间,发现不生效,这里记录一下问题以及解决办法。
本文以修改照片时间为例。
代码很简单:
File origin = //原文件
File file = //复制的文件
if (origin != null && file != null) {
// 设置修改时间
file.setLastModified(origin.lastModified());
System.out.println(file.lastModified());
System.out.println(origin.lastModified());
}
简单分析是因为修改完文件之后,实际上只是改变了文件对象,磁盘并没有生成文件。
后来文件流创建生成文件过程中,文件的更新时间实际是创建的时间,因此,设置不生效。相当于被覆盖了。

弄清楚原因,解决也比较容易:在文件流创建文件成功之后再修改更新时间即可。
File origin = //原文件
File file = //复制的文件
// 读取文件流
FileInputStream input = new FileInputStream(origin);
// 创建文件流
FileOutputStream out = new FileOutputStream(file);
// 文件流创建文件
try {
int len = 0;
while (-1 != (len = input.read(buffer))) {
out.write(buffer, 0, len);
}
} catch (Exception ee) {
ee.printStackTrace();
} finally {
out.close();
input.close();
}
if (origin != null && file != null) {
// 设置修改时间
file.setLastModified(origin.lastModified());
System.out.println(file.lastModified());
System.out.println(origin .lastModified());
}
