从网络共享读取文件会将其创建时间设置为上次写入时间

时间:2013-02-27 10:45:09

标签: .net windows file-io network-share

当我从网络共享中读取文件时,它会将创建时间更新为上次写入时间。这会导致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还是在服务器端。有没有人有任何见解?

1 个答案:

答案 0 :(得分:1)

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