问题描述
在.NET/C#编程开发中,当前需要根据指定的字符串路径判断这路径是指向的文件还是文件夹,有哪些方法可以实现呢?
方案一
使用File.GetAttributes()
方法,如下:
FileAttributes attr = File.GetAttributes(@"c:\Temp");
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
MessageBox.Show("Its a directory");
else
MessageBox.Show("Its a file");
如果在.NET Framework 4.0或者以上版本中,我们甚至可以使用更简单的代码来实现此功能,使用FileAttributes.HasFlag()
方法,如下:
FileAttributes attr = File.GetAttributes(@"c:\Temp");
if (attr.HasFlag(FileAttributes.Directory))
MessageBox.Show("Its a directory");
else
MessageBox.Show("Its a file");
方案二
超级简单的.NET/C#检测方法,如下:
File.Exists();
Directory.Exists();
方案三
在.NET Framework 4.0及以上版本,一条语句即可实现,如下:
File.GetAttributes(data.Path).HasFlag(FileAttributes.Directory)
方案四
bool IsPathDirectory(string path)
{
if (path == null) throw new ArgumentNullException("path");
path = path.Trim();
if (Directory.Exists(path))
return true;
if (File.Exists(path))
return false;
if (new[] {"\\", "/"}.Any(x => path.EndsWith(x)))
return true; // ends with slash
return string.IsNullOrWhiteSpace(Path.GetExtension(path));
}
方案五
一种文件夹检测的实现,如下:
using System.IO;
public static class FileSystemInfoExtensions
{
public static bool IsDirectory(this FileSystemInfo fileSystemInfo)
{
if (fileSystemInfo == null)
{
return false;
}
if ((int)fileSystemInfo.Attributes != -1)
{
return fileSystemInfo.Attributes.HasFlag(FileAttributes.Directory);
}
return fileSystemInfo is DirectoryInfo;
}
}
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册