如何做Directory.GetFiles
并排除名为“abc”和“xyz”的文件?
基本上我有一个DIR,其中所有文件都存在,并且必须将一组特定文件发送到一个部门,并且需要将“abc”和“xyz”文件发送给另一个?
目前我这样做:
'Standard Documents
Dim strAttachments As List(Of String) = New List(Of String)
strAttachments.AddRange(Directory.GetFiles(GlobalVariables.strFolderPath))
我需要相同的功能,但不包括文件,然后执行与上面类似的命令,将文件包含到另一个地址。
干杯,,
詹姆斯
更新
Dim exclude = {"ATS_Declaration"}
Dim myFiles = From fn In Directory.EnumerateFiles(GlobalVariables.strFolderPath)
Where Not exclude.Contains(Path.GetFileNameWithoutExtension(fn), StringComparer.InvariantCultureIgnoreCase)
Dim strAttachments As List(Of String) = New List(Of String)(myFiles)
答案 0 :(得分:2)
您可以使用LINQ和System.IO.Path.GetFileNameWithoutExtension
:
Dim exclude = { "abc", "xyz" }
Dim myFiles = From fn in Directory.EnumerateFiles(GlobalVariables.strFolderPath)
Where Not exclude.Contains(Path.GetFileNameWithoutExtension(fn), StringComparer.InvariantCultureIgnorecase)
Dim strAttachments As List(Of String) = New List(Of String)(myFiles)
请注意,我使用了EnumerateFiles
,因为它不需要先将所有内容加载到内存中。
答案 1 :(得分:0)
我无法在此处找到排除文件的答案(不确定文件包含匹配项的原因,除非包含的文件名与排除字符串完全相同,否则包含项为何不匹配) 下面的答案效果很好
查看以下内容:Exclude files from Directory.EnumerateFiles based on multiple criteria