문제

지정된 디렉터리의 변경 사항과 추가 사항을 모니터링하고 해당 정보를 데이터베이스에 저장하는 C# 응용 프로그램을 구축 중입니다.

파일 하나하나 수정 여부를 확인하는 일은 피하고 싶은데, 파일 접근 시간을 완전히 신뢰할 수 있을지 모르겠습니다.

디렉토리에서 최근에 수정된 파일을 가져오는 데 사용하는 가장 좋은 방법은 무엇입니까?

사용자가 요청할 때만 수정 사항을 확인하며 지속적으로 실행되는 서비스는 아닙니다.

도움이 되었습니까?

해결책

흠...흥미로운 질문입니다.처음에 나는 당신에게 파일 시스템 감시자 수업.그러나 사용자 요청에 따라 작동하게 하려면 처음에 디렉터리 정보를 저장한 다음 사용자가 요청할 때마다 비교해야 할 수도 있습니다.나는 아마도 FileSystemWatcher를 사용하고 어쨌든 결과를 저장해 둘 것입니다.

다른 팁

FileSystemWatcher 개체를 사용합니다.다음은 귀하가 찾고 있는 작업을 수행하는 몇 가지 코드입니다.

    // Declares the FileSystemWatcher object
    FileSystemWatcher watcher = new FileSystemWatcher(); 

    // We have to specify the path which has to monitor

     watcher.Path = @"\\somefilepath";     

    // This property specifies which are the events to be monitored
     watcher.NotifyFilter = NotifyFilters.LastAccess |
       NotifyFilters.LastWrite | NotifyFilters.FileName | notifyFilters.DirectoryName; 
    watcher.Filter = "*.*"; // Only watch text files.

    // Add event handlers for specific change events...

    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted += new FileSystemEventHandler(OnChanged);
    watcher.Renamed += new RenamedEventHandler(OnRenamed);
    // Begin watching.
    watcher.EnableRaisingEvents = true;


    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
    // Specify what is done when a file is changed, created, or deleted.
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
    // Specify what is done when a file is renamed.
    }

내 생각에 당신이 원하는 것은 파일 시스템 감시자 수업.

이 튜토리얼에서는 이를 사용하여 간단한 Windows 서비스의 변경 사항에 대해 디렉터리를 모니터링하는 방법을 설명합니다. C#에서 간단한 파일 감시자 Windows 서비스를 구현하는 방법

항상 확인하는 것이 아니라 사용자가 요청할 때만 확인해야 한다면 FileSystemWatcher를 사용하지 마세요.특히 공유 리소스인 경우에는 동일한 공유 디렉터리를 감시하는 50대의 클라이언트 시스템을 원하지 않습니다.

아마도 오타일지도 모르지만, 파일 액세스 시간을 보면 안 되고, 파일 수정 시간을 보고 변경 사항을 확인해야 합니다.그것조차 신뢰할 수 없습니다.

내가 할 일은 파일 날짜와 바이트 크기 또는 기타 파일 시스템 속성에 대한 일종의 체크섬 기능을 구현하는 것입니다.그렇게 하면 전체 파일에서 변경 사항을 찾지 않고 원격 리소스에 대한 연결을 유지하여 모니터링하는 대신 요청 시 파일의 속성만 검색할 수 있습니다.

더 무거운 해결책은 반대 방향으로 파일을 모니터링하고 변경 사항을 기록할 수 있는 공유 드라이브를 호스팅하는 시스템에 서비스를 설치하는 것입니다.그런 다음 파일을 전혀 건드리지 않고 서비스에 쿼리할 수 있지만 이는 아마도 과잉일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top