Dan*_*ely 4 c# directory file filter
string[] fileEntries = Directory.GetFiles(pathName, "*.xml");
Run Code Online (Sandbox Code Playgroud)
还返回文件,例如foo.xml_ 是否有办法强制它不这样做,或者我必须编写代码来过滤返回结果。
这与命令提示符下的行为相同dir *.xml,但与 Windows 资源管理器中的搜索不同*.xml。
此行为是设计使然。来自MSDN(查看注释部分和给出的示例):
文件扩展名恰好为三个字符的 searchPattern 返回扩展名为三个或更多字符的文件,其中前三个字符与 searchPattern 中指定的文件扩展名匹配。
您可以按如下方式限制它:
C#2.0:
string[] fileEntries = Array.FindAll(Directory.GetFiles(pathName, "*.xml"),
delegate(string file) {
return String.Compare(Path.GetExtension(file), ".xml", StringComparison.CurrentCultureIgnoreCase) == 0;
});
// or
string[] fileEntries = Array.FindAll(Directory.GetFiles(pathName, "*.xml"),
delegate(string file) {
return Path.GetExtension(file).Length == 4;
});
Run Code Online (Sandbox Code Playgroud)
C#3.0:
string[] fileEntries = Directory.GetFiles(pathName, "*.xml").Where(file =>
Path.GetExtension(file).Length == 4).ToArray();
// or
string[] fileEntries = Directory.GetFiles(pathName, "*.xml").Where(file =>
String.Compare(Path.GetExtension(file), ".xml",
StringComparison.CurrentCultureIgnoreCase) == 0).ToArray();
Run Code Online (Sandbox Code Playgroud)