Directory.GetFiles(strFolderPath)排除某些文件名VB.NET

时间:2014-12-04 15:25:07

标签: vb.net

如何做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)

2 个答案:

答案 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