[高手进]从局域网拷贝文件到本地盘,源文件和目标文件的“修改时间”居然不同?(100分)

  • 主题发起人 主题发起人 winddeity
  • 开始时间 开始时间
W

winddeity

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的一个同步文件,其中有一个功能就是判断源文件和目标文件的修改时间是否一致,如果不一致就重新拷贝。
以下函数获得文件的修改时间:
function UpdateTime(FilePath: string): extended;
var
FileHandle : Integer;
CreationTime, LastAccessTime, LastWriteTime: _FileTime;
SysTime: _SystemTime;
begin
FileHandle := FileOpen(FilePath, fmOpenRead);
GetFileTime(FileHandle, @CreationTime, @LastAccessTime, @LastWriteTime);
FileTimeToLocalFileTime(LastWriteTime, LastWriteTime);
FileTimeToSystemTime(LastWriteTime, SysTime);
result := SystemTimeToDateTime(SysTime);
FileClose(FileHandle);
end;
在拷贝本地文件到本地盘时,得到的两个文件修改时间完全一致;
可是我从局域网中拷贝文件到本地盘
1. 这样得到的两个文件修改时间就有大概0到几秒的差异
2. 拷贝不同文件差异还不一样。
3. 我也比较了这个差异不等于两台电脑的系统时间差。

请问这到底是因为我的程序有问题还是windows系统问题?有方法解决吗?
 
你可以试着正常情况复制完成后,用API设置一下文件修改时间,让他们保持一致
 
to Mike1234567890:
Mike兄说的确实是一个可取的方法,但我想知道这样的情况是为什么发生的?如果改进程序,是不是可以避免?
另:局域网中有中文系统,但大部分都是英文系统,不知道这有没有关系。
 
大富翁的人气好像越来越少了,每天就只有这么几个帖子[:(]
 
你可以不要比较到秒,比较到分看看。这个问题可能和网络有关,使得操作系统认为文件有改动。
 
后退
顶部