6

当我从网络共享读取文件时,它会将创建时间更新为上次写入时间。这会导致 System.Configuration.Configuration 出现问题,因为它认为文件已更改并因此引发异常(配置文件已被另一个程序更改。)。解决方法是事先手动将创建时间设置为最后一次写入时间。但我想知道这是否是一个已知问题。

这是一些测试代码:

    string filePath = @"X:\SomeFile.txt";
    FileInfo fileInfo = new FileInfo(filePath);
    DateTime creationTimeBeforeRead = fileInfo.CreationTimeUtc;
    FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
    byte[] result = new byte[fileStream.Length];
    fileStream.Read(result, 0, (int)fileStream.Length);
    fileStream.Close();
    fileInfo.Refresh();
    DateTime creationTimeAfterRead = fileInfo.CreationTimeUtc;

我不知道问题出在 .net、Windows API 还是服务器端。有没有人有任何见解?

4

1 回答 1

1

我知道这是一个老问题,但我在我的家庭 Linux 服务器(非常旧的 NAS 盒)上组织一些图像文件时遇到了这个问题。文件创建时间变成了文件复制时间,我发现问题是由于 EXT3 Linux 文件格式不支持任何类型的共享(NFS 和 SAMBA)。将文件移动到 EXT4 和 XFS 文件系统格式解决了我的问题。

于 2013-09-17T14:33:53.267 回答