1

提前抱歉拼写错误

**

  • 项目介绍

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

  • 问题

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

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

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

1 回答 1

0

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

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

于 2013-08-17T10:18:41.160 回答