类型为' System.IO.DirectoryNotFoundException'的未处理异常发生在mscorlib.dll中

时间:2015-03-10 22:38:46

标签: c# windows directory runtime-error

运行代码时出现此错误。本质上它应该是从映射到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!");
    }
}

1 个答案:

答案 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!");
    }
}

这是我的假设。

希望我能帮助你:)。