2013-06-13 44 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显然,你必须修复