2013-10-03 3 views
0

전날부터 모든 파일을 찾아 한 폴더에서 다른 폴더로 이동하는 도구를 현재 개발하고 있습니다. 나는 허가 문제에 부딪치지 않고있다. 그러나 나는 IF 성명서를 고수하고있다. 응용 프로그램에서 파일을 찾으면 추가 처리를 위해 다른 폴더로 이동하십시오. 내 문제는 어제의 날짜로 모든 파일을 찾아 이동시킬 수 없다는 것입니다. 나는 아래 코드를 제공했다. 그리고 거의 다 나와있다. 도움을 주셔서 미리 감사드립니다.전날의 파일 만 가져 오기

 private void Form1_Load(object sender, EventArgs e) 
    { 
     DateTime past = DateTime.Today.AddDays(-1); 
     txtSourceFolderCount.Text = past.ToShortDateString(); 

     //efile originally start here 
     var sourceDir = @"\\DIS2\EFilingXML\Archive"; 

     //application moves to archive 
     var destDir = @"\\DIS2\EFilingXML"; 

     //only XML files are accepted 
     //var pattern = "*.xml"; 

     DirectoryInfo source = new DirectoryInfo(sourceDir); 

     // Get info of each file into the directory 
      foreach (FileInfo fi in source.GetFiles()) 
      { 
       var creationTime = fi.LastWriteTime; 

       if (creationTime == past && creationTime < DateTime.Today) 
       { 
        fi.MoveTo(Path.Combine(destDir, fi.ToString())); 
       } 
      } 
    } 
+2

그리고이 코드는 귀하의 문제? (당신은 당신이 보는 행동을 지정하는 것을 잊었습니다.)'dt가'DateTime' 범위 안에 있는지 (예 :'dt <오늘 && dt> = today.AddDays (-1)') 확인하고 싶습니까? –

+0

@AlexeiLevenkov 감사합니다. 좋은 캐치. 나는 한 것이라고 생각했지만하지 않았습니다. 내가 원했던 것까지 그 밖의 모든 것이 정확하다고 보는가? – clerktech

+0

이벤트 로그를 검사하여 사용 권한 관련 오류가 있는지 확인할 수도 있습니다. –

답변

2

내 문제는 내가 어제 단지 날짜를 모든 파일을 찾아 그들을 이동할 수 없습니다 오전입니다.

두 가지 문제 :

1) 정적 System.IO.File.GetCreationTime 메서드를 호출 할 때 당신은 File.Name을 사용하고 있습니다. 이 정적 메서드에는 "MyFile.xml"과 같은 값을 가진 짧은 File.Name 이외의 컨텍스트가없고 경로가 연결되지 않습니다.

2) 당신은 당신이 두 번째 한정자를 오늘부터 픽업 파일을 추가 할 것입니다하지 않는 한 if 문 아래 같은 :

 //gets all files in source directory & moves to destination directory(archive) 
     foreach (var file in new DirectoryInfo(sourceDir).GetFiles(pattern)) 
     { 
      DateTime dt = File.GetCreationTime(file.FullName); 

      if (dt >= DateTime.Today.AddDays(-1) && dt < DateTime.Today) 
      { 
       file.MoveTo(Path.Combine(destDir, file.Name)); 
      } 
     } 
+0

제공된 권장 사항에서 아무 것도 이동하지 않습니다. 코드를 정리했습니다. 누락 된 것이 있습니까? – clerktech

+0

찾았습니다. 정적 인 System.IO.File.GetCreationTime에게 경로 정보없이 "MyFile.xml"과 같은 짧은 파일 이름을 기반으로 정보를 찾기 때문에 dt가 올바르게 채워지지 않습니다. – nvuono

+0

그게 왜 "file.FullName"에 대한 게시물에 대한 편집을 했나요? 그것은 아직 디버깅을 위해 작동하지 않을 수도 있습니다! 감사! – clerktech

관련 문제