我将当前日期时间写入文件(文件可能已经存在或不存在)作为文件的内容。稍后,我将文件的修改时间与文件中包含的日期时间作为内容进行比较。但是,日期修改时间小于内容日期时间。以后发生的事情(文件的修改时间)可能会有更早的时间。数据内容是json字符串,写为文本文件。 (注意:我没有以编程方式设置日期修改时间)
这是我的代码
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
//this is how file content is formatted for writing.
writeFile(location, dateFormat.format(new Date()))
public static void writeFile(String location, String data) {
try {
PrintWriter output = new PrintWriter(
new File(location));
output.write(data);
output.close();
} catch (FileNotFoundException e) {
}
}
**To compare**
//read content from file
Date date = dateFormat.parse(dateString);
//get file modified time
Date diskTime = new Date(file.lastModified());
if(this.diskTime.getTime() < this.contentTime.getTime()
|| (this.diskTime.getTime() - this.contentTime.getTime()) > 2500)
{
return false;
}
问题是diskTime有时(并不总是)在内容时间之前的一秒钟,如果case返回false则为。
这是否正常发生以及如何克服(始终创建文件)?
答案 0 :(得分:0)
不幸的是,Android lastModified值报告不可靠,因为它利用内部缓存并且还有一个错误。你可以阅读related answer来解决这个问题。
this post author尝试了类似的实验。如果您打算检查文件修改时间,我建议在另一个数据存储(如SqlLite)上管理时间戳。