FCL应用技巧之------DirectoryInfo.GetFiles()搜索模式存在的问题
2013-08-06 16:21
281 查看
1 MSDN上关于DirectoryInfo.GetFiles()搜索模式的说明
先看关于DirectoryInfo.GetFiles()的MSDN文档:public FileInfo[] GetFiles( string searchPattern, SearchOption searchOption )
在 searchPattern 中使用星号通配符时(例如,“*.txt”),匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的searchPattern 将返回扩展名为三个或更多字符的文件,其中前三个字符与searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时,此方法仅返回与指定文件扩展名匹配的文件。例如,假设目录下有两个文件“file1.txt”和“file1.txtother”,使用“file?.txt”搜索模式时只返回第一个文件,而使用“file*.txt”搜索模式时会同时返回这两个文件。 |
“*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。
“*.abcd”只返回扩展名为 .abcd 的文件。
“*.abcde”只返回扩展名为 .abcde 的文件。
“*.abcdef”只返回扩展名为 .abcdef 的文件。
2 实际执行测试
然后执行如下测试代码:using System; using System.IO; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { DirectoryInfo di = new DirectoryInfo(@"F:\test"); DirectoryInfo di2 = new DirectoryInfo(@"Y:\test"); FileInfo[] fis = di.GetFiles("*.doc", SearchOption.AllDirectories); FileInfo[] fis2 = di2.GetFiles("*.doc", SearchOption.AllDirectories); Console.WriteLine("位于本地硬盘上的文件夹"); foreach (FileInfo fi in fis) { Console.WriteLine(fi.Name); } Console.WriteLine("位于SAMBA服务器上的文件夹"); foreach (FileInfo fi in fis2) { Console.WriteLine(fi.Name); } } } }
注:代码中的两个文件夹"F:\test"与"Y:\test"是内容完全一样的,其中Y是一个映射分区,内容实际是一台samba服务器共享的文件夹,里面是一些Word文档,内容如下:
再看看程序的运行结果:
3 测试结果分析
可见,如果是本地硬盘,那么确实如MSDN所说,*.doc既会匹配.doc也会匹配.docx文档。但是如果目录所在地不是本地硬盘(本例是Linux上的samba共享),那么就只会匹配.doc而不会匹配.docx。这也说明了MSDN的说法不够准确,至少不全面。希望对大家有所帮助。
相关文章推荐
- getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) 返回null的问题
- DirectoryInfo.GetFiles 方法 (String, SearchOption)
- 经典样式表大赛中web标准应用存在的问题
- httpd: apr_sockaddr_info_get() failed for apache 启动问题
- C# Directory.GetFiles()获取多个类型格式的文件
- 解决Context.getExternalFilesDir(null)返回null造成java.lang.NullPointerException的问题
- Android笔记:存储相关,getExternalCacheDir, getExternalFilesDir,getExternalStorageDirectory等
- Directory.GetFiles 方法
- [置顶] 设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题
- 移动应用界面设计模式-搜索 排序 筛选
- 混淆泛型造成的应用逻辑问题getGenericType()
- 用 Windows API “GetAdaptersInfo” 获取 MAC 时遇到的问题
- Lucene SandBox包中highlighter(高亮显示搜索结果包)存在的问题
- android开发位置应用getBestProvider返回为空的问题
- 哈希算法在模式匹配问题中的应用
- 应用接入CAS后,org.jasig.cas.client.session.SingleSignOutFilter导致request.getInputStream()取不到的问题
- 关于本科毕业论文《Laguerre小波在数值积分与微分方程数值解中的应用》存在的问题与小结
- spa(单页应用)中,使用history模式时,微信长按识别二维码在ios下失效的问题
- C#中 File,Directory,FileInfo,DirectoryInfo区别与应用
- Google搜索在工作上的应用技巧