抱歉,拼写错误

**


项目介绍


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


问题


当我从邻居那里获取文件并更新它时,一个“问题”就被指责了,因为我的lastModified现在更大了,因此他向我索要该文件-等等,这是一个永无止境的循环,我建议使用setLastModified(我正在更改我邻居的lastModified时间)但它不起作用?

我在Google上搜索,它说setLastModified将修改时间设置为最接近的秒数-这是问题吗?
我该如何解决/他们是一种更准确地设置修改时间的方法吗?

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

最佳答案

最后修改的时间戳无论如何都只能精确到一秒,因此精确度不是问题。

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

10-04 10:03