setLastModified - Java

时间:2013-08-17 10:11:50

标签: java synchronization client-server simpledateformat

提前抱歉拼写错误

**

  • 项目简介

** 我需要用Java创建一个系统,它同步系统中所有计算机中的单个文本文件。 为了做到这一点,我已经为每台计算机创建了一个服务器/客户端,它连接到他的所有邻居,并使用 lastModified 方法检查谁是最直接的文件。

  • 问题

一个“问题”,当我从我的邻居那里得到文件并更新它时,我的 lastModified 现在变大了,因此他从我那里请求文件 - 等等一个永无止境的循环,我被建议用 setLastModified 来解决它(我正在将我邻居的 lastModified 时间改为我的)但它不起作用了吗?!

我发布谷歌,它说 setLastModified 将修改时间设置为最近的秒 - 这是问题吗? 我该如何修复它/它们是一种更精确的方法来设置修改时间?

 if (neighborLastMod  > file.lastModified()){
 getFileFromNeighbor(neighbor.getip(),neighbor.getport(),neighborLastMod);
 ....
 file.setLastModified(neighborLastMod); 

1 个答案:

答案 0 :(得分:0)

最后修改的时间戳最多只能精确到一秒,所以准确性不是问题。

可能的问题是,当您从邻居获取文件时,最后修改的时间戳会暂时设置为当前时间。要解决此问题,您的getFileFromNeighbor应该将文件从邻居保存到临时文件,设置临时文件的上次修改时间戳,然后进行原子移动或重命名,以便任何系统都不会看到文件时间戳更高。