抱歉,拼写错误
**
项目介绍
**
我需要用Java创建一个系统,该系统在系统中的所有计算机中同步单个文本文件。
为了做到这一点,我已经为每台计算机创建了一个服务器/客户端,该服务器/客户端链接到其所有邻居,并使用lastModified方法检查谁是更新最多的文件。
问题
当我从邻居那里获取文件并更新它时,一个“问题”就被指责了,因为我的lastModified现在更大了,因此他向我索要该文件-等等,这是一个永无止境的循环,我建议使用setLastModified(我正在更改我邻居的lastModified时间)但它不起作用?
我在Google上搜索,它说setLastModified将修改时间设置为最接近的秒数-这是问题吗?
我该如何解决/他们是一种更准确地设置修改时间的方法吗?
if (neighborLastMod > file.lastModified()){
getFileFromNeighbor(neighbor.getip(),neighbor.getport(),neighborLastMod);
....
file.setLastModified(neighborLastMod);
最佳答案
最后修改的时间戳无论如何都只能精确到一秒,因此精确度不是问题。
一个可能的问题是,当您从邻居那里获取文件时,上次修改的时间戳会临时设置为当前时间。要解决此问题,您的getFileFromNeighbor
应该将邻居中的文件保存到临时文件,设置临时文件的最后修改时间戳,然后进行原子移动或重命名,以便任何系统在任何时候都不会看到带有更高的时间戳。