文件修改了android上的时间不匹配

时间:2015-06-04 04:42:59

标签: android datetime

我将当前日期时间写入文件(文件可能已经存在或不存在)作为文件的内容。稍后,我将文件的修改时间与文件中包含的日期时间作为内容进行比较。但是,日期修改时间小于内容日期时间。以后发生的事情(文件的修改时间)可能会有更早的时间。数据内容是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则为。

这是否正常发生以及如何克服(始终创建文件)?

1 个答案:

答案 0 :(得分:0)

不幸的是,Android lastModified值报告不可靠,因为它利用内部缓存并且还有一个错误。你可以阅读related answer来解决这个问题。

this post author尝试了类似的实验。如果您打算检查文件修改时间,我建议在另一个数据存储(如SqlLite)上管理时间戳。