[C#].NET/C#编程开发中检测一个指定的字符串路径是文件还是文件夹的方法有哪些呢?

C#开发 作者: Rector 353阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在.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;
    }
}

阅读了该文章的人还浏览了...

本文永久链接码友网 » [C#].NET/C#编程开发中检测一个指定的字符串路径是文件还是文件夹的方法有哪些呢?

发布于: 2018-05-16 08:33:41
分享扩散:

文章评论

获取验证码