2013-02-27 1 views
6

네트워크 공유에서 파일을 읽을 때 생성 시간이 마지막 쓰기 시간으로 업데이트됩니다. 이 때문에 파일이 변경된 것으로 간주하고 예외 (구성 파일이 다른 프로그램에 의해 변경되었습니다.)가 발생하기 때문에 System.Configuration.Configuration에 문제가 발생합니다. 일시적인 해결책은 작성 시간을 수동으로 최종 쓰기 시간으로 설정하는 것입니다. 하지만 이것이 알려진 문제인지 여부를 알고 싶습니다. 문제는 Windows API 또는 서버 측에서, .NET 내에있는 경우네트워크 공유에서 파일을 읽으면 생성 시간이 마지막 쓰기 시간으로 설정됩니다.

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; 

나는 아무 생각이 : 여기

는 몇 가지 테스트 코드입니다. 누구든지 어떤 통찰력을 가지고 있습니까?

+0

메모장에서 열어 보았는데 같은 문제가 발생했습니다. 그래서 난. NET이 동작에 대한 가능한 소스가 아닌 것 같아요. – ctusch

+0

어떤 종류의 서버입니까? 일부 파일 시스템은 작성 시간을 지원하지 않습니다. –

+1

이것은 정상적이지 않습니다. 네트워크 리다이렉터에서 심각한 문제가 발생했습니다. 서버 측. –

답변

1

나는 이것이 낡은 질문이지만 내 가정의 리눅스 서버 (아주 오래된 NAS 상자)에서 이미지 파일을 정리하면서 발견했다. 파일 생성 시간이 파일 복사 시간으로 나오고 있었고 문제는 EXT3 Linux 파일 형식으로 인해 모든 유형의 공유 (NFS 및 SAMBA)에서 지원되지 않음을 알았습니다. 파일을 EXT4 및 XFS 파일 시스템 형식으로 이동하면 문제가 해결되었습니다.

관련 문제