Saturday, April 20, 2019

c# - Better way to check if a Path is a File or a Directory?



I am processing a TreeView of directories and files. A user can select either a file or a directory and then do something with it. This requires me to have a method which performs different actions based on the user's selection.



At the moment I am doing something like this to determine whether the path is a file or a directory:



bool bIsFile = false;
bool bIsDirectory = false;


try
{
string[] subfolders = Directory.GetDirectories(strFilePath);

bIsDirectory = true;
bIsFile = false;
}
catch(System.IO.IOException)
{

bIsFolder = false;
bIsFile = true;
}


I cannot help to feel that there is a better way to do this! I was hoping to find a standard .NET method to handle this, but I haven't been able to do so. Does such a method exist, and if not, what is the most straightforward means to determine whether a path is a file or directory?


Answer



From How to tell if path is file or directory:



// get the file attributes for file or directory

FileAttributes attr = File.GetAttributes(@"c:\Temp");

//detect whether its a directory or file
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
MessageBox.Show("Its a directory");
else
MessageBox.Show("Its a file");


Update for .NET 4.0+




Per the comments below, if you are on .NET 4.0 or later (and maximum performance is not critical) you can write the code in a cleaner way:



// get the file attributes for file or directory
FileAttributes attr = File.GetAttributes(@"c:\Temp");

if (attr.HasFlag(FileAttributes.Directory))
MessageBox.Show("Its a directory");
else
MessageBox.Show("Its a file");


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...