Reputation: 851
I have a function that automatically creates a specified Path
by determining whether the String Path
is a File
or Directory
.
Normally, i would use this if the path already exists
:
FileAttributes attributes = File.GetAttributes("//Path");
if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
Directory.CreateDirectory("//Path");
}
But what if it doesn't? How to check whether the String Path
is a File
or Directory
if it doesn't exist?
Upvotes: 8
Views: 19009
Reputation: 191
The short answer is that there is no 100% way to distinguish a folder from a file by path alone. A file does not have to have a file extension, and a folder can have periods in its name (making it look like a file extension).
Upvotes: 2
Reputation: 744
If files in your scenario must have extensions then you could use this method.
NOTE: It is legal in windows to have periods in directories, but this was mostly introduced for cross operating system compatibility of files. In strictly windows environments it is considered bad form to have files without extensions or to put periods or spaces in directory names. If you do not need to account for that scenario then you could use this method. If not you would have to have some sort of flag sent through the chain or a structure to identify the intent of the string.
var ext = System.IO.Path.GetExtension(strPath);
if(ext == String.Empty)
{
//Its a path
}
If you do not need to do any analysis on file type you can go as simple as:
if(System.IO.Path.HasExtension(strPath))
{
//It is a file
}
Upvotes: 7