This class allows for easy access to long path names in Windows. This is useful if you've ever run into exceptions because the path you're trying
to access is too long. Your applications will no longer be limited by the 250~ character length limit.
I set out to build a project in my free time. I won't get into the details but, I was stopped in my tracks, my plan ruined by the max length limit.
Fortunately, I found the article series Long Paths in .NET,
Part 1 of 3 [Kim Hamilton]. I used ideas from that article series to come to this simple solution to my problem.
Using the Code
I tried to emulate some of the functionality and method names of the
Directory classes in the
namespace as closely as possible. The namespace is
System.IO.LongPath. The two classes are
File class contains the following
void Delete(string file)
Deletes the specified file.
FileStream Open(string path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share)
Opens a file stream to the file specified in the path argument.
void Copy(string sourceFile, string destinationFile, bool failIfDestinationExists)
Copies a file from one location to another.
void Move(string sourceFile, string destinationFile, bool failIfDestinationExists)
Moves a file from one location to another.
Directory class contains the following
void Create(string directory)
Creates a directory with the given name.
void Delete(string drectory)
Deletes the specified directory and all sub-directories and files.
bool Exists(string drectory)
Checks if the specified directory exists.
string GetFileSystemEntries(string drectory)
Gets file system entries for the directory provided by the directory argument. This is not a recursive function, only file system entries for the provided directory are returned.
Points of Interest
This is the largest venture I've made into the Windows API. I don't know exactly what I'm doing. For example, I copied the attribute:
I copied this from Kim Hamilton's article and used it on the additional
bool functions I imported from the Windows API.
I don't know if I should be doing that or not. Feedback on that would be interesting.
You must specify all paths as long name paths by using \\?\c:\long\path and network paths as \\?\UNC\server\long\path.
You may not use relative paths. All paths specified must be absolute. ".." and "." are not supported.
I'm interested in any feedback. Please share your thoughts with me.
- 2011-09-14 - First submission.