文件内容比较问题c#
本文关键字:问题 比较 文件 | 更新日期: 2023-09-27 18:17:56
我的要求是在一定的间隔后将文件从一个目录移动到另一个目录。因此,基本复制工作,但在下一个后续间隔期间,我只想移动新文件。
以下是我的方法:
我正在创建两个源&目标目录中的目标位置,其思想是基于这两个文件的差异,只复制上次迭代的新文件。
对于第一次迭代,它将在目标中创建一个空白文件,表示复制所有内容。但是我的文件比较在这里遇到了问题,基于下面代码中的逻辑,它创建了这个异常"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文件中的名称。
谢谢! !
这不是在创建一个异常;相反,它写的是在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()));