如何解决复制文件时出现“找不到路径的一部分”错误
|| 我已经在整个互联网上搜索了此内容,但仍然没有找到解决方案。作为最终尝试,我希望有人能给我确切的答案。 尝试将文件从目录复制到另一个文件资源管理器时,出现该错误。它具有用于浏览目录的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);
}
}
我得到错误的地方是1英镑。
我已经读到它可能与设备映射有关,但是我真的不知道那是什么。
解决方法
您不显示
toBeCopied
的创建位置。看来您可能已经超过了click事件中设置的值的末尾,并试图复制一堆具有空名称的文件。
您应该将此添加到点击事件的开始
toBeCopied = new string[listView1.SelectedItems.Count];
也(如其他人所指出的)代替
sourceDir + \"\\\\\" + toBeCopied[i]
你应该使用
Path.Combine(sourceDir,toBeCopied[i])
, 您可以看看MSDN上的Path.Combine方法吗?这将有助于确保您所有的完整路径都没有多余的\\\,而不应该放在其中。
即Path.Combine(sourceDir,toBeCopied[i])
如果仍然出现错误,请告诉我上面的值是什么。
, 到文件名的目标路径是否存在? File.Copy()
不会创建任何丢失的中间路径,您需要自己执行此操作。使用调试器查看正在创建的源路径和目标路径,并确保源存在并且目标存在,至少直到目标文件的父目录为止。
, 假设同时存在sourceDir
和targetDir
(可以并且应该检查),则可能会将尾随的\\
加倍。构建路径时,应使用Path.Combine。
File.Copy(Path.Combine(sourceDir,toBeCopied[i]),Path.Combine(targetDir,true);
, 从Henk的循环中借用,但是我要添加文件和目录检查,因为找不到路径是需要检查/创建OP所存在问题的错误。
for (int i = 0; i < toBeCopied.Length; ++i)
{
string sourceFile = Path.Combine(sourceDir,toBeCopied[i]);
if(File.Exists(sourceFile))
{
string targetFile = Path.Combine(targetDir,toBeCopied[i]);
if(!Directory.Exists(targetDir))
Directory.CreateDirectory(targetDir);
File.Copy(sourceFile,targetFile,true);
}
refreshToolStripMenuItem_Click(sender,e)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。