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

use*_*131 16 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

找不到路径E:\ Debug\VipBat的一部分

Sac*_*hin 18

错误是自我解释的.您尝试访问的路径不存在.

string source_dir = "E:\\Debug\\VipBat\\{0}";
Run Code Online (Sandbox Code Playgroud)

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

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

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

但首先检查您尝试访问的路径存在.

  • 使用 Path.combine() (2认同)
  • 该错误不言自明。不存在的路径不是“路径的一部分” (2认同)
  • @tno2007 找不到不存在的部分! (2认同)

Akr*_*rem 5

这里有些不对劲.你写:

string source_dir = @"E:\\Debug\\VipBat\\{0}";
Run Code Online (Sandbox Code Playgroud)

而错误是

找不到路径E\Debug\VCCSBat的一部分

这不是同一个目录.

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

string source_dir = @"E:\Debug\VipBat"; // remove {0} and the \\ if using @
Run Code Online (Sandbox Code Playgroud)

要么

string source_dir = "E:\\Debug\\VipBat"; // remove {0} and the @ if using \\
Run Code Online (Sandbox Code Playgroud)