2013-10-03 48 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 = today.AddDays(-1)')? –

+0

@AlexeiLevenkov謝謝你。接得好。我以爲我做到了,但我沒有。就我想要做的事情而言,其他一切看起來是否正確? – clerktech

+0

可能還會檢查您的事件日誌,看看是否有任何與權限相關的錯誤。 – 2013-10-03 17:43:13

回答

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

發現它 - 你的dt沒有正確填充,因爲你告訴靜態System.IO.File.GetCreationTime來查找基於短文件名的信息,如「MyFile.xml」,沒有任何路徑信息 – nvuono

+0

那爲什麼你在「file.FullName」這個帖子上做了一個編輯?它還沒有被調試過,因此可能正在工作!謝謝! – clerktech

相關問題