将ListView中选择的文件复制/移动到通过FolderBrowserDialog选择的文件夹中失败

时间:2019-05-21 09:31:05

标签: c#

确实需要帮助。)在listView2中,有一个文件列表,通过单击button5,应将这些文件复制/移动到FolderBrowserDialog中选择的文件夹中。

这是什么:

private void button5_Click(object sender, EventArgs e)
{
    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
    {
        foreach (ListViewItem item in listView2.SelectedItems)
        {
            if (!File.Exists(Path.GetFullPath(item.Text)))
                return;
            File.Copy(Path.GetFullPath(item.Text), 
                Path.Combine(folderBrowserDialog1.SelectedPath, Path.GetFileName(item.Text)),
                true);
        }
    }
}

问题是文件未复制到文件夹

1 个答案:

答案 0 :(得分:0)

似乎您在指令中给出了错误的路径,因为您正在处理错误的路径类型。 路径有两种:

  • 绝对路径:文件的完整路径,包含驱动器和该文件的所有文件夹,建议您从任何地方访问相同路径
  • 相对路径:相对于可执行文件的路径,如果exe位于“ C:/ Temp”中,则可以使用类似的相对路径来访问“ C:/ Temp / foo / bar” “ foo / bar”,因为您位于“ C:/ Temp”,所以它将正常工作

在您的情况下,您可以从FolderBrowserDialog中选择一个目录,该目录将返回绝对路径,例如:

folderBrowserDialog1.SelectedPath = "C:/users/myname/mydir"

然后,您将遍历列表,该列表应包含文件的绝对路径。

使用绝对路径,您无需合并任何路径,只需使用它们

foreach (ListViewItem item in listView2.SelectedItems)
{
    if (!File.Exists())
        return;

    File.Copy(item.Text, folderBrowserDialog1.SelectedPath, true);
}