zoukankan      html  css  js  c++  java
  • 获取指定目录下多种格式的文件

    System.IO.Dirctory.GetFiles(string path, string searchPattern)方法不支持选择多种格式的文件。

    下面提供一个通过OpenFileDialog中支持的文件过滤器Filter获取多种格式文件的方法。

    /// <summary>
    /// 根据文件过滤器获取指定目录下的文件
    /// </summary>
    /// <param name="directoryPath"></param>
    /// <param name="filter">Example:"doc file|*.doc|txt file|*.txt"</param>
    /// <returns></returns>
    public List<string> GetDirectoryFiles(string directoryPath, string filter)
    {
        if (Directory.Exists(directoryPath) == false)
        {
            throw new DirectoryNotFoundException(String.Format("/'{0}/' is not found!"));
        }
        List<string> extensions = this.GetFilterExtensions(filter);
        
        List<string> files = new List<string>();
        if (extensions.Count > 0)
        {
            for (int i = 0; i < extensions.Count; i++)
            {
                files.AddRange(this.ArrToList(Directory.GetFiles(directoryPath, extensions[i])));
            }
        }
        else
        {
            files.AddRange(this.ArrToList(Directory.GetFiles(directoryPath)));
        }
        return files;
    }
    
    /// <summary>
    /// 解析文件过滤器
    /// </summary>
    /// <param name="filter">Example:"doc file|*.doc|txt file|*.txt"</param>
    /// <returns></returns>
    private List<string> GetFilterExtensions(string filter)
    {
        List<string> extensions = new List<string>();
        if (String.IsNullOrEmpty(filter) == false)
        {
            string[] strArr = filter.Split(new char[] { '|' });
            for (int i = 1; i < strArr.Length; i += 2)
            {
                string temp = strArr[i];
                if (temp.StartsWith("*.") == false)
                    temp = "*." + temp;
                if (extensions.Contains(temp) == false)
                    extensions.Add(temp);
            }
        }
        return extensions;
    }
    
    /// <summary>
    /// 将数组转换为List
    /// </summary>
    /// <param name="strArr"></param>
    /// <returns></returns>
    private List<string> ArrToList(string[] strArr)
    {
        List<string> strList = new List<string>();
        if (strArr != null && strArr.Length > 0)
        {
            for (int i = 0; i < strArr.Length; i++)
                strList.Add(strArr[i]);
        }
        return strList;
    }
  • 相关阅读:
    Angular JS 中的内置方法之$watch
    Angular JS 中 指令详解
    Angular JS 中 ng-controller 值复制和引用复制
    git 使用技巧
    itextpdf 解析带中文的html问题
    详解Java 8中Stream类型的“懒”加载
    JSP网页处理过程
    [Java 8] (10) 使用Lambda完成函数组合,Map-Reduce以及并行化
    深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
    Android:联系人Contacts之ContentResolver query 参数详解
  • 原文地址:https://www.cnblogs.com/hibernation/p/3245521.html
Copyright © 2011-2022 走看看