gpt4 book ai didi

c# - 复制到 Dropbox 文件夹时修改 LastWriteTime

转载 作者:可可西里 更新时间:2023-11-01 09:28:43 25 4
gpt4 key购买 nike

我有一个小的 C# 脚本,我用它来将我的开发文件夹备份到我的 Dropbox 文件夹,比较每个文件的源和目标 FileInfo.LastWriteTime 然后执行 File.Copy 如果需要的话。

我注意到新创建的文件不仅在脚本的后续运行中被复制,而且还在之后的运行中被复制,尽管在此期间没有被修改。

LastModifiedDate 似乎在第一次复制每个文件时被四舍五入到最接近的秒数,使其在下一次看起来比原始文件更旧。在下一次运行时,文件会再次复制,但现在 LastModifiedDate 不会向下舍入,即使文件实际上已被修改,所以从那时起一切都按预期进行。

任何人都可以阐明这里发生了什么吗?

更新:

似乎只影响某些文件类型,.png 是其中之一。该问题可以通过以下代码演示:

var source = @"c:\temp\test.png";
var target = @"C:\Users\Me\Dropbox\test.png";
Console.WriteLine(File.GetLastWriteTime(source).ToString("HH:mm:ss.fff"));
Console.WriteLine(File.GetLastWriteTime(target).ToString("HH:mm:ss.fff"));
File.Copy(source, target, true);
Console.WriteLine(File.GetLastWriteTime(source).ToString("HH:mm:ss.fff"));
Console.WriteLine(File.GetLastWriteTime(target).ToString("HH:mm:ss.fff"));

第一次运行我们得到:

17:29:01.618 (source)
00:00:00.000 (target doesn't exist yet)
17:29:01.618 (source unchanged)
17:29:01.618 (target as source)

第二次运行:

17:29:01.618 (source unchanged)
17:29:01.000 (target has been rounded down)
17:29:01.618 (source unchanged)
17:29:01.618 (target as source again)

第三次及后续运行:

17:29:01.618 (source unchanged)
17:29:01.000 (target still as source - no rounding down)
17:29:01.618 (source unchanged)
17:29:01.618 (target as source)

更新:

Procmon 显示 Dropbox.exe 在初始复制后大约三秒执行 SetBasicInformationFile 操作,这似乎是更改发生的时间,尽管 Procmon 没有显示精确到毫秒的文件时间。

因为它似乎只影响图形文件,所以我认为它与 Dropbox 缩略图生成有关,但我真的看不出有什么好的理由让他们这样做,尤其是当他们在下次复制时保持时间戳不变.

最佳答案

可能是当您将文件复制到 Dropbox 监视文件夹时,Dropbox 后台同步应用程序会将文件上传到 Dropbox。完成此操作后,它会再次同步以使本地文件时间与上传的文件时间相同。下次运行 fiddler session ,看看上传后是否可以从 Dropbox 下载。

关于c# - 复制到 Dropbox 文件夹时修改 LastWriteTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com