Shr*_*ree 2 c# asp.net file fileinfo
我尝试使用外卡搜索文件.我的代码是:
string SearchQuery ='';
List<ATTFile> lstFiles = new List<ATTFile>();
if (Directory.Exists(FilePath))
{
DirectoryInfo dirInfo = new DirectoryInfo(FilePath);//File PAth is not a problem.
foreach (FileInfo file in dirInfo.GetFiles(SearchQuery + "?"))//Want help here
{
ATTFile obj = new ATTFile();
obj.FileName = file.Name;
obj.Folder = file.Directory.ToString();
obj.Size = int.Parse(file.Length.ToString());
obj.Extension = file.Extension;
lstFiles.Add(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我提供完整的文件名,代码可以工作 例如:在目录中我有以下文件.
and.jpg
asp.jpg
bb.jpg
cc.jpg
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,如果我给出完整的文件名,它的工作意味着.SearchQuery ="and.jpg"它工作.但如果我给SearchQuery ="a"我想要一个结果
and.jpg
asp.jpg
Run Code Online (Sandbox Code Playgroud)
用a.启动所有文件.可以在里面使用通配符 GetFiles(SearchQuery + "?").谢谢.
使用DirectoryInfo.GetFiles方法(String),您可以使用它指定通配符
* - Zero or more characters.
? - Exactly one character.
Run Code Online (Sandbox Code Playgroud)
你可以试试:
dirInfo.GetFiles("a*");
Run Code Online (Sandbox Code Playgroud)
而不是?您可以*在您的查询中使用以获取searchquery以任何其他字符开头和结尾的文件.
您可以使用overload搜索模式:
String fileNamePart = "a";
String fileExtension= ".jpg";
String searchPattern = String.Format("{0}*{1}", fileNamePart, fileExtension);
dirInfo.GetFiles(searchPattern)
Run Code Online (Sandbox Code Playgroud)
如果您想在一个查询中使用all,也可以使用LINQ:
lstFiles = dirInfo.EnumerateFiles(searchPattern)
.Select(file => new ATTFile(){
FileName = file.Name;
Folder = file.Directory.ToString();
Size = int.Parse(file.Length.ToString());
Extension = file.Extension;
}).ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,我在DirectoryInfo.EnumerateFiles这里使用,因为当您使用许多文件和目录时,它可以提高资源效率.