2013-06-13 43 views
0

我創造的目標位置都源&目標目錄的文件列表,要求是基於這兩個文件的差別僅複製是從最後一次迭代的新文件。目錄未發現異常C#

爲第一次重複複製的作品,下一個迭代創建,創建一個空白的差異[不同]文件,處理這種情況,如果我在那裏檢查文件的長度,並再次複製他們我已經加入。但是,如果條件不工作按行爲,與零長度它去else語句,並引發了錯誤空白的文件名:

Could not find a part of the path 'C:\interswitch\source\'. 

下面的代碼:

string path = Path.Combine(target_dir, "Diff.txt"); 

     if (new FileInfo(path).Length == 0) 

     { 

      foreach (FileInfo fi in sourceinfo.GetFiles()) 

     { 
      fi.CopyTo(Path.Combine(targetinfo.ToString(), fi.Name), true); 
     } 
     }   

     else 

     foreach (string file in File.ReadLines(path)) 
     { 

      { 
       string sourceFile = System.IO.Path.Combine(source_dir, file); 
       string destFile  = System.IO.Path.Combine(target_dir, file); 
       System.IO.File.Copy(sourceFile, destFile, true); 
      } 


     } 
+0

「下一次迭代創建一個空白DIFF [差異]文件被創建」 你能詳細的那句話?另外一個「空」文件不會自動有長度0,你有沒有試過檢查所說的文件長度? – Master117

+0

第一次運行diff文件將具有來自源的所有內容,因爲目標爲空,現在在下一次運行時沒有將新文件添加到源,並且創建目標空diff文件中的相同文件。如果爲空文件不是零長度的,會是什麼,所以你創建一個差異文件,檢查文件是否爲空 – user2385057

+0

啊,理想的方法,這意味着你檢查目標和源目錄之間的diff?爲什麼你將它們寫入文件而不是列表並在內部處理?無論如何,「如果(新的FileInfo(路徑).Length == 0)」是正確的,如果文件是空的,你檢查了文件?也許它不完全是空的? – Master117

回答

0

if (new FileInfo(path).Length == 0) 不產生0顯然,你必須修復