“找不到路径的一部分”错误消息

时间:2014-02-15 11:10:36

标签: c# file-io

我正在使用c#进行编程,并希望将包含子文件夹的文件夹从闪存盘复制到启动。

这是我的代码:

private void copyBat()
{
    try
    {
        string source_dir = "E:\\Debug\\VipBat";
        string destination_dir = "C:\\Users\\pc\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";

        if (!System.IO.Directory.Exists(destination_dir))
        {
            System.IO.Directory.CreateDirectory(destination_dir);
        }       

        // Create subdirectory structure in destination    
        foreach (string dir in Directory.GetDirectories(source_dir, "*", System.IO.SearchOption.AllDirectories))
        {
            Directory.CreateDirectory(destination_dir + dir.Substring(source_dir.Length));          
        }

        foreach (string file_name in Directory.GetFiles(source_dir, "*.*", System.IO.SearchOption.AllDirectories))
        {
            File.Copy(file_name, destination_dir + file_name.Substring(source_dir.Length), true);
        }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message, "HATA", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
}

我收到了一个错误:

  

找不到路径E:\ Debug \ VipBat

的一部分

9 个答案:

答案 0 :(得分:17)

错误是不言自明的。您尝试访问的路径不存在。

string source_dir = "E:\\Debug\\VipBat\\{0}";

我确信这不是正确的道路。直接在Debug驱动器中的E:文件夹对我来说是错误的。我想必须有项目名称文件夹目录。

第二件事;你的字符串中的{0}是什么。我确信它是一个参数占位符,因为文件夹名称不能包含{0}这样的名称。因此,您需要使用String.Format()来替换实际值。

string source_dir = String.Format("E:\\Debug\\VipBat\\{0}",variableName);

但首先检查您尝试访问的路径是否存在。

答案 1 :(得分:5)

出了点问题。你写了:

string source_dir = @"E:\\Debug\\VipBat\\{0}";

,错误是

  

无法找到路径E \ Debug \ VCCSBat

的一部分

这不是同一个目录。

在您的代码中存在问题,您必须使用:

string source_dir = @"E:\Debug\VipBat"; // remove {0} and the \\ if using @

string source_dir = "E:\\Debug\\VipBat"; // remove {0} and the @ if using \\

答案 2 :(得分:4)

驱动器E是映射驱动器吗?然后,它可以由除用户帐户之外的其他帐户创建。这可能是错误的原因。

答案 3 :(得分:2)

可能不相关,但请考虑使用Path.Combine代替destination_dir + dir.Substring(...)。从它的外观来看,你的.Substring()会在开头留下反弹,但像Path这样的辅助类是有原因的。

答案 4 :(得分:2)

我有同样的错误,虽然在我的情况下问题是DESTINATION路径的格式。上面的注释在调试路径字符串格式方面是正确的,但在File.Copy异常报告中似乎存在一个错误,它仍然会返回SOURCE路径而不是DESTINATION路径。所以不要忘记在这里看看。

-TC

答案 5 :(得分:2)

导致此错误的原因之一可能是其中之一:

  1. 路径不正确 - 但不太可能,因为CreateDirectory应该创建任何路径,除非路径本身无效,读取无效字符
  2. 运行应用程序的帐户无权在路径位置创建目录,例如,如果您尝试在没有足够权限的情况下在共享驱动器上创建目录等,

答案 6 :(得分:1)

File.Copy(file_name, destination_dir + file_name.Substring(source_dir.Length), true);

此行有错误,因为代码所需的是directory name + file name,而不是文件名。

这是正确的

File.Copy(source_dir + file_name, destination_dir + file_name.Substring(source_dir.Length), true);

答案 7 :(得分:1)

我只需使用管理员权限重新启动Visual Studio即可解决类似问题。

问题是因为它无法在没有提升访问权限的情况下打开与Sharepoint相关的一个项目。

答案 8 :(得分:0)

答案已经出现,另一方面,我认为您应该使用

using System.IO;

代替上面的“复杂”语法。