2009-09-03 8 views
2

5 시간마다 타이머를 실행하고 4 일보다 오래된 폴더에서 파일을 삭제하고 싶습니다. 샘플 코드로 주시겠습니까?4 일이 넘은 폴더에서 파일 삭제

+5

도움이 필요한 부분이 있습니까? 아무도 당신을 위해 단순히 코드를 작성하려고하지 않습니다. –

답변

4

언급되지 않았으므로 System.Threading.Timer을 사용하는 것이 좋습니다. 다음은 구현 예입니다.

System.Threading.Timer DeleteFileTimer = null; 

private void CreateStartTimer() 
{ 
    TimeSpan InitialInterval = new TimeSpan(0,0,5); 
    TimeSpan RegularInterval = new TimeSpan(5,0,0); 

    DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, 
      InitialInterval, RegularInterval); 

} 

private void QueryDeleteFiles(object state) 
{ 
    //Delete Files Here... (Fires Every Five Hours). 
    //Warning: Don't update any UI elements from here without Invoke()ing 
    System.Diagnostics.Debug.WriteLine("Deleting Files..."); 
} 

private void StopDestroyTimer() 
{ 
    DeleteFileTimer.Change(System.Threading.Timeout.Infinite, 
    System.Threading.Timeout.Infinite); 

    DeleteFileTimer.Dispose(); 
} 

이렇게하면 최소한의 번거 로움없이 Windows 서비스에서 파일 삭제 코드를 실행할 수 있습니다.

+0

제안 해 주셔서 감사합니다. 언제 StopDestroyTimer()를 사용해야합니까? –

+0

타이머를 중지하거나 서비스/응용 프로그램이 종료 될 때 간단히 전화하십시오. 가장 중요한 것은 가끔 호출하는 것입니다. (System.Threading.) Timer는 IDisposable을 구현하여 Dispose() 호출이 필요합니다. –

+0

다시 한번 감사드립니다. 알았다. –

8
DateTime CutOffDate = DateTime.Now.AddDays(-4) 
DirectoryInfo di = new DirectoryInfo(folderPath); 
FileInfo[] fi = di.GetFiles(); 

for (int i = 0; i < fi.Length; i++) 
{ 
    if (fi[i].LastWriteTime < CutOffDate) 
    { 
     File.Delete(fi[i].FullName); 
    } 
} 

당신은 내가 가진 응용 프로그램에서 이미지 캐시를 삭제하면 내가 사용하는 단지 무엇, 뭔가 다른 LastWriteTime 속성을 대체 할 수 있습니다.

편집 :이 나던 타이머 부분을 포함하지만

... 난 당신이 직접 그 부분을 알아낼 드리겠습니다. 작은 인터넷 검색은 일정에 따라 여러 가지 방법을 제시해야합니다.

+0

코드에 대해 Neil에게 감사드립니다. 이것이 제가 찾고있는 것입니다. –