2016-07-06 6 views
0

폴더를 모니터링해야합니다. 파일이 업로드되었는지 확인하십시오. 그리고 나서 업로드 된 최신 파일의 생성 날짜 & 시간을 가져와 파일의 시간 생성이 현재 시간에서 30 분 이상되었는지 확인해야합니다. FileSystemWatcher를 사용하여 폴더를 모니터링했지만 현재 파일과 최신 파일을 비교하고 비교해야합니다.폴더에서 파일 찾기, C에서 생성 된 최신 날짜 얻기 및 비교 #

private void watch() 
{ 
    FileSystemWatcher watcher = new FileSystemWatcher(); 
    watcher.Path = path; 
    watcher.NotifyFilter = NotifyFilters.LastWrite; 
    NotifyFilters.DirectoryName; 
    watcher.Filter = "*.*"; 
    watcher.Changed += new FileSystemEventHandler(OnChanged); 
    watcher.EnableRaisingEvents = true; 
} 

Private void OnChanged(object source, FileSystemEventArgs e) 
{ 
    //Copies file to another directory. 
} 

어떻게해야합니까? 도와주세요!

+0

'FileSystemEventArgs'에 대한 도움말보기 https://msdn.microsoft.com/en-us/library/system.io.filesystemeventargs(v=vs.110).aspx – GreatAndPowerfulOz

+0

그러나 일단 파일이 생성되면'OnChanged'가 실행됩니다 (업로드 됨) => 생성 시간은 '지금'입니다. 업로드 프로세스가 30 분 이상 걸렸는 지 확인하고 싶습니까? 아니면 너 정확히 뭡니까? – user3185569

+0

@ user3185569 실제로 예약 된 작업으로 코드를 실행하여 1 시간마다 실행하도록 계획하고 있습니다. 따라서 폴더에 생성 된 최신 파일이 지금부터 30 분 이상 생성되었는지 확인해야합니다. – velvt

답변

1

귀하의 의견을 통해 나는 왜 FileSystemWatcher을 사용해야하는지 알 수 없습니다. 1 시간마다 파일의 생성 시간을 확인하기 위해 디렉토리를 점검해야하는 예약 된 작업이 있다고 가정합니다. 그래서 작업에서 바로 아래 수행

// Change @"C:\" to your upload directory 
string[] files = Directory.GetFiles(@"C:\"); 

var oldestFile = files.OrderBy(path => File.GetCreationTime(path)).FirstOrDefault(); 
if (oldestFile != null) 
{ 
    var oldestDate = File.GetCreationTime(oldestFile); 

    if (DateTime.Now.Subtract(oldestDate).TotalMinutes > 30) 
    { 
     // Do Something 
    } 
} 

특정 파일을 필터링하려면 과부하 사용하십시오는 onChanged 이벤트에서

string[] files = Directory.GetFiles(@"C:\", "*.pdf"); 
+0

특정 유형의 파일을 필터링해야하는 경우 pdf라고 말합니까? – velvt

+0

@velvt 간단히 편집을 확인하십시오. – user3185569

+0

Ok 고맙습니다. :) – velvt

1

을 :

private static void OnChanged(object source, FileSystemEventArgs e) 
    { 
     var currentTime = DateTime.Now; 
     var file = new FileInfo(e.FullPath); 
     var createdDateTime = file.CreationTime; 
     var span = createdDateTime.Subtract(currentTime); 

     if (span.Minutes > 30) 
     { 
      // your code 
     } 
    } 

특정 파일을 필터링하려면 확장 기능 (예 : pdf)을 사용하려면 다음을 사용할 수 있습니다.

if (file.Extension == ".pdf") 
{ 

}