2013-06-12 78 views
0

我的要求是在一定的時間間隔之後將文件從一個目錄移動到另一個目錄。所以基本的複製工作,但在接下來的時間間隔,我只想移動新的文件。文件內容比較問題c#

以下是我的做法:

我創建的目標位置都源&目標目錄的文件列表,這個想法是基於這兩個文件的差別僅複製新從最後一次迭代中的文件。

對於第一次迭代,它將在目標中創建一個空白文件,指示覆制所有內容。但我的文件比較,這裏打的問題的基礎上,在下面的代碼邏輯是研發這個錯誤時拋出「System.Linq.Enumerable + d__99`1 [System.String]」

下面的代碼:

static void Main(string[] args) 
{ 

    create_source_fileList(); 
    string source_dir = System.Configuration.ConfigurationSettings.AppSettings["SourceDir"]; 

    string target_dir = System.Configuration.ConfigurationSettings.AppSettings["TargetDir"]; 

    string dpath = target_dir + "Diff" + ".txt"; 

    TextWriter df = new StreamWriter(dpath); 

    DirectoryInfo sourceinfo = new DirectoryInfo(source_dir); 

    DirectoryInfo targetinfo = new DirectoryInfo(target_dir); 

    string[] source_f_list = File.ReadAllLines(target_dir + "Source_File_List.txt"); 
    string[] target_f_list = File.ReadAllLines(target_dir + "Target_File_List.txt"); 

    IEnumerable<String> file_list_diff = source_f_list.Except(target_f_list); 


    df.WriteLine(file_list_diff); 
    df.Close(); 


    if (!Directory.Exists(targetinfo.FullName)) 
    { 
     Directory.CreateDirectory(targetinfo.FullName); 
    } 
    foreach (FileInfo fi in sourceinfo.GetFiles()) 
    { 

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

    create_target_fileList(); 

} 

在解決這個問題上需要幫助,這種方法也可以在循環中工作,我將只循環diff文件中的名稱。

謝謝!

回答

0

它沒有創建一個異常;而是在IEnumerable<string>實例上寫入調用ToString的結果。您需要替換:

df.WriteLine(file_list_diff); 

df.WriteLine(string.Join(Environment.NewLine, file_list_diff)); 

或之前,.NET 4:

df.WriteLine(string.Join(Environment.NewLine, file_list_diff.ToArray())); 
+0

作品..謝謝! – user2385057