运行代码时出现此错误。本质上它应该是从映射到textbox1中的字符串的任何字符串匹配移动数据。
整个错误如下:
未处理的类型' System.IO.DirectoryNotFoundException'发生在mscorlib.dll
其他信息:找不到路径的一部分' C:\ Users \ jpearson \ Documents \ Visual Studio 2013 \ Projects \ WindowsFormsApplication2 \ WindowsFormsApplication2 \ bin \ Debug \ 0110'。
我已经验证代码中的所有文件路径都是有效的,所以我不完全确定我缺少的是什么。
private void button1_Click(object sender, EventArgs e)
{
folderBrowserDialog1.ShowDialog();
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
private Dictionary<string, string> mapping = new Dictionary<string, string>
{
{ "0110", @"C:/Example" },
{ "1000", @"C:/Example2" },
{ "1100", @"C:/Example3" },
};
private void button2_Click(object sender, EventArgs e)
{
string destination = textBox1.Text;
string source = textBox2.Text;
if (mapping.ContainsKey(source))
{
foreach (var f in Directory.GetFiles(source))
{
File.Copy(f, Path.Combine(destination, Path.GetFileName(f)));
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
else
{
MessageBox.Show ("Oh No! Something went wrong, try again!");
}
}
答案 0 :(得分:2)
从您提供的代码和示例中我会说密钥是您通过GUI提供的值,并且该密钥映射到字典中值的文件夹。我会说你忘了获得给定密钥的价值,并且你正在搜索你的密钥名称为'0110'的文件夹。所以我建议你改变这样的代码:
private void button2_Click(object sender, EventArgs e)
{
string destination = textBox1.Text;
string source = textBox2.Text;
if (mapping.ContainsKey(source))
{
string directoryName = mapping[source];
foreach (var f in Directory.GetFiles(directoryName))
{
File.Copy(f, Path.Combine(destination, Path.GetFileName(f)));
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
else
{
MessageBox.Show ("Oh No! Something went wrong, try again!");
}
}
这是我的假设。
希望我能帮助你:)。