当我从网络共享中读取文件时,它会将创建时间更新为上次写入时间。这会导致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还是在服务器端。有没有人有任何见解?
答案 0 :(得分:1)
我知道这是一个老问题,但我在家里的Linux服务器(非常旧的NAS机箱)上组织一些图像文件时遇到了它。文件创建时间是文件复制时间,我发现问题是由于EXT3 Linux文件格式不支持任何类型的共享(NFS和SAMBA)。将文件移动到EXT4和XFS文件系统格式解决了我的问题。