我有一个通配符模式,可能是"*.txt"或"POS ??.dat".
我还有内存中的文件名列表,我需要与该模式进行比较.
我将如何做到这一点,请记住,我需要与IO.DirectoryInfo.GetFiles(模式)使用完全相同的语义.
编辑:盲目地将其转换为正则表达式将无法正常工作.
我在过去使用setargv.obj链接扩展通配符参数用于许多C和C++应用程序,但我找不到.net应用程序的任何类似提及.
是否有一种标准方法可以让您的应用程序的命令行参数自动扩展通配符?(即将args参数中的一个条目的*.doc扩展为与该通配符匹配的所有条目).
PS我已经使用Directory.GetFiles()为我当前的小项目攻击了一些东西,但它没有覆盖带路径的通配符(还有),没有自定义代码就可以做到这一点.
更新:这是我粗略的黑客,为了说明.它需要拆分GetFiles的路径和名称参数,但这是一般的想法.将setargv.obj链接到C或C++应用程序基本上会执行所有通配符扩展,使用户只能遍历argv数组.
static void Main(string[] args)
{
foreach (String argString in args)
{
// Split into path and wildcard
int lastBackslashPos = argString.LastIndexOf('\\') + 1;
path = argString.Substring(0, lastBackslashPos);
filenameOnly = argString.Substring(lastBackslashPos,
argString.Length - lastBackslashPos);
String[] fileList = System.IO.Directory.GetFiles(path, filenameOnly);
foreach (String fileName in fileList)
{
//do things for each file
}
}
}
Run Code Online (Sandbox Code Playgroud) 我如何检查目录中是否找不到xls?我尝试了下面的代码,但它不起作用......
if (!System.IO.File.Exists(".xls"))
{
MessageBox.Show("No XLS dile found");
}
Run Code Online (Sandbox Code Playgroud)