复制文件时"无法找到路径的一部分"错误

Cip*_*agă 4 c# path file-copying

我已经在互联网上搜索了这个,但仍然没有找到解决方案.作为一个终极尝试,我希望有人能给我一个确切的答案.

当我尝试在文件资源管理器中将文件从目录复制到另一个文件时,我得到了这个错误.我正在尝试自己做.它有一个用于浏览目录的treeview控件和一个用于显示目录内容的listview控件.部分代码如下所示:

private void copyToolStripMenuItem_Click(object sender, EventArgs e)
    {
        sourceDir = treeView1.SelectedNode.FullPath;
        for (int i = 0; i < listView1.SelectedItems.Count; ++i)
        {
            ListViewItem l = listView1.SelectedItems[i];
            toBeCopied[i] = l.Text; // string[] toBeCopied, the place where I save the file names I want to save
        }
    }


private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
    {
        targetDir = treeView1.SelectedNode.FullPath;
        try
        {
            for (int i = 0; i < toBeCopied.Length; ++i)
            {
                File.Copy(sourceDir + "\\" + toBeCopied[i], targetDir + "\\" + toBeCopied[i], true);
                refreshToolStripMenuItem_Click(sender, e);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message + Environment.NewLine + ex.TargetSite);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我收到错误的地方是File.Copy(sourceDir + "\\" + toBeCopied[i] ....

我读过它可能与设备的映射有关,但我真的不知道那是什么.

Low*_*ide 5

你能看一下MSDN 上的Path.Combine方法吗?这将有助于确保您的整个路径都没有多余的路径.

Path.Combine(sourceDir, toBeCopied[i])

如果您仍然收到错误,请告诉我上述内容的价值.


Jef*_*dge 3

您没有显示toBeCopied创建的位置。看起来您可能已经超出了单击事件中设置的值的末尾,并尝试复制一堆名称为空的文件。

您应该将其添加到点击事件的开头

toBeCopied = new string[listView1.SelectedItems.Count];
Run Code Online (Sandbox Code Playgroud)

另外(正如其他人指出的那样)而不是

sourceDir + "\\" + toBeCopied[i]
Run Code Online (Sandbox Code Playgroud)

你应该使用

Path.Combine(sourceDir, toBeCopied[i])
Run Code Online (Sandbox Code Playgroud)