多文件扩展名是searchPattern的System.IO.Directory.GetFiles [英] Multiple file-extensions searchPattern for System.IO.Directory.GetFiles

查看:387
本文介绍了多文件扩展名是searchPattern的System.IO.Directory.GetFiles的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是语法上的 Directory.GetFiles设置的多个文件扩展名作为是searchPattern ()?例如过滤掉文件的的.aspx 的.ascx 的扩展。

  // TODO:设置该字符串'是searchPattern'只与获取文件
//扩展'.ASPX'和'的.ascx。
VAR filteredFiles = Directory.GetFiles(路径,是searchPattern);
 

更新 LINQ是不是一种选择,它必须是一个是searchPattern 传入的GetFiles ,在这个问题中指定。

解决方案

我相信没有开箱即用的解决方案,这就是Directory.GetFiles方法的限制。

这是相当容易的,虽然写你自己的方法,这里是一个<一个href="http://www.beansoftware.com/ASP.NET-FAQ/Multiple-Filters-Directory.GetFiles-Method.aspx">example.

在code可能是:

  ///&LT;总结&gt;
///从符合给定的过滤器给定文件夹返回的文件名
///&LT; /总结&gt;
///&LT; PARAM NAME =SourceFolder&GT;文件夹与文件检索和LT; /参数&GT;
///&LT; PARAM NAME =过滤器&GT;由分隔的多个文件过滤器|人物&LT; /参数&GT;
///&LT; PARAM NAME =searchOption&GT; File.IO.SearchOption,
///可能是AllDirectories或TopDirectoryOnly&LT; /参数&GT;
///&LT;返回&GT;的FileInfo对象的数组的文件名是presents集合
///满足给定的过滤器和LT; /回报&GT;
公共字符串[]的GetFiles(字符串SourceFolder,串过滤器,
 System.IO.SearchOption searchOption)
{
 // ArrayList的将持有的所有文件名
ArrayList的alFiles =新的ArrayList();

 //创建过滤字符串数组
 字符串[] MultipleFilters = Filter.Split('|');

 //为每个过滤器找到mathing文件名
 的foreach(在MultipleFilters字符串的FileFilter)
 {
  //添加发现文件名数组列表
  alFiles.AddRange(Directory.GetFiles(SourceFolder,一个FileFilter,searchOption));
 }

 //返回有关文件名的字符串数组
 返回(串[])alFiles.ToArray(typeof运算(字符串));
}
 

What is the syntax for setting multiple file-extensions as searchPattern on Directory.GetFiles()? For example filtering out files with .aspx and .ascx extensions.

// TODO: Set the string 'searchPattern' to only get files with
// the extension '.aspx' and '.ascx'.
var filteredFiles = Directory.GetFiles(path, searchPattern);

Update: LINQ is not an option, it has to be a searchPattern passed into GetFiles, as specified in the question.

解决方案

I believe there is no "out of the box" solution, that's a limitation of the Directory.GetFiles method.

It's fairly easy to write your own method though, here is an example.

The code could be:

/// <summary>
/// Returns file names from given folder that comply to given filters
/// </summary>
/// <param name="SourceFolder">Folder with files to retrieve</param>
/// <param name="Filter">Multiple file filters separated by | character</param>
/// <param name="searchOption">File.IO.SearchOption, 
/// could be AllDirectories or TopDirectoryOnly</param>
/// <returns>Array of FileInfo objects that presents collection of file names that 
/// meet given filter</returns>
public string[] getFiles(string SourceFolder, string Filter, 
 System.IO.SearchOption searchOption)
{
 // ArrayList will hold all file names
ArrayList alFiles = new ArrayList();

 // Create an array of filter string
 string[] MultipleFilters = Filter.Split('|');

 // for each filter find mathing file names
 foreach (string FileFilter in MultipleFilters)
 {
  // add found file names to array list
  alFiles.AddRange(Directory.GetFiles(SourceFolder, FileFilter, searchOption));
 }

 // returns string array of relevant file names
 return (string[])alFiles.ToArray(typeof(string));
}

这篇关于多文件扩展名是searchPattern的System.IO.Directory.GetFiles的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆