文件内容比较问题c#

时间:2013-06-12 10:46:01

标签: c# visual-studio-2010 ienumerable

我的要求是在一定时间间隔后将文件从一个目录移动到另一个目录。所以基本副本有效,但在下一个后续间隔期间,我只想移动新文件。

以下是我的方法:

我正在创建源和文件列表目标位置中的目标目录,这个想法是基于这两个文件的差异,只复制上次迭代中的新文件。

对于第一次迭代,它将在目标中创建一个空白文件,指示复制所有内容。但我的文件比较是在这里遇到问题,基于下面代码中的逻辑,它创建了这个激活“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文件中的名称。

谢谢!

1 个答案:

答案 0 :(得分:0)

它没有创造例外;相反,它是在ToString实例上编写调用IEnumerable<string>的结果。您需要替换:

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()));