首页 / C#开发 / 正文

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

3647 发布于: 2018-05-16 读完约需5分钟

问题描述

在.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#编程开发中翻转(reverse)一个字符串的方法有哪些,哪种方法更好呢?

下一篇: [C#].NET/C#编程的应用程序开发中读取大文件并将其转换成字节数组(byte array)的方式有哪些,哪种更好呢?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册