"Could not find a part of the path" error message

I am programming in c# and want to copy a folder with subfolders from a flash disk to startup.

Here is my code:

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); }
}

I got an error:

Could not find a part of the path E:\Debug\VipBat

6

10 Answers

The error is self explanatory. The path you are trying to access is not present.

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

I'm sure that this is not the correct path. Debug folder directly in E: drive looks wrong to me. I guess there must be the project name folder directory present.

Second thing; what is {0} in your string. I am sure that it is an argument placeholder because folder name cannot contains {0} such name. So you need to use String.Format() to replace the actual value.

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

But first check the path existence that you are trying to access.

3

There's something wrong. You have written:

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

and the error was

Could not find a part of the path E\Debug\VCCSBat

This is not the same directory.

In your code there's a problem, you have to use:

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

or

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

Is the drive E a mapped drive? Then, it can be created by another account other than the user account. This may be the cause of the error.

2

Probably unrelated, but consider using Path.Combine instead of destination_dir + dir.Substring(...). From the look of it, your .Substring() will leave a backlash at the beginning, but the helper classes like Path are there for a reason.

I had the same error, although in my case the problem was with the formatting of the DESTINATION path. The comments above are correct with respect to debugging the path string formatting, but there seems to be a bug in the File.Copy exception reporting where it still throws back the SOURCE path instead of the DESTINATION path. So don't forget to look here as well.

-TC

There can be one of the two cause for this error:

  1. Path is not correct - but it is less likely as CreateDirectory should create any path unless path itself is not valid, read invalid characters
  2. Account through which your application is running don't have rights to create directory at path location, like if you are trying to create directory on shared drive with not enough privileges etc
1
File.Copy(file_name, destination_dir + file_name.Substring(source_dir.Length), true);

This line has the error because what the code expected is the directory name + file name, not the file name.

This is the correct one

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

I resolved a similar issue by simply restarting Visual Studio with admin rights.

The problem was because it couldn't open one project related to Sharepoint without elevated access.

0

This could also be the issue: Space in the folder name

Example: Let this be your path: string source_dir = @"E:\Debug\VipBat";

If you try accessing this location without trying to check if directory exists, and just in case the directory had a space at the end, like :"VipBat    ", instead of just "VipBat" the space at the end will not be visible when you see in the file explorer.

So make sure you got the correct folder name and dont add spaces to folder names. And a best practice is to check if folder exists before you keep the file there.

We just had this error message occur because the full path was greater than 260 characters -- the Windows limit for a path and file name. The error message is misleading in this case, but shortening the path solved it for us, if that's an option.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like