【发布时间】:2016-05-01 08:29:07
【问题描述】:
我有一个主文件列表Filelist。主列表包含完整文件路径,还有第二个列表copylist,它是通过从目录中获取内容来填充的。我需要替换@中的文件名987654323@ 与临时文件夹中的匹配,所以我使用了以下代码。
Filelist = new List<string>();
//Code to Populate File List from openfiledialog
try
{
copylist = Directory.GetFiles(temppath + @"\mydir\");
List<string> tempfiles = new List<string>(Filelist);
int x = 0;
foreach (string file in tempfiles)
{
for (int i = 0; i < copylist .Length; i++)
{
if (Path.GetFileName(file) == Path.GetFileName(copylist [i]))
{
MessageBox.Show("Removed: " + file + " \ninserted:" + copylist [i]);
Filelist.RemoveAt(x);
Filelist.Insert(x,copylist [i]);
}
x++;
}
}
}
catch (Exception)
{
}
我测试了 4 个文件...当我手动检查时匹配的文件名(即:临时文件夹和 FileList 中的相同文件名)。相等性检查 ie:Path.GetFileName(file) == Path.GetFileName(copylist [i]) 仅满足 2 个文件和最后,Filelist 中只有 1 个文件被替换,即使所有 4 个文件都存在于 temp 文件夹中。
我做错了什么。请指教。
【问题讨论】:
-
@MaciejLos 它是一个字符串列表。请参阅更新。