0

我想获取给定文件夹中所有图像文件的列表。

Dim targetFolder As String = "C:\Data\"    
Dim imagefiles = From file In Directory.EnumerateFiles(targetFolder)

For Each f In imagefiles
    'do something
Next

然而,上面列出了所有文件类型。如何将其更改为仅返回图像文件类型?

4

3 回答 3

1

图像文件可以有多个扩展名,但 EnumerateFiles 在其重载中只能采用一个扩展名。您可以通过提供文件扩展名列表并使用 IEnumerable 方法 Where 和 Any 来克服此限制

Dim targetFolder As String = "C:\Data"    
Dim imgExtensions() As string  = { ".jpg", ".jpeg", ".bmp", ".gif", ".png" }
Dim imageFiles = Directory.EnumerateFiles(targetFolder) _ 
                 .Where(Function(s) imgExtensions _
                 .Any(Function(x) x = Path.GetExtension(s)))

For Each file in imageFiles
    Console.WriteLine(file)
Next
于 2013-10-04T08:46:18.317 回答
0

添加第二个参数Directory.EnumerateFiles

Directory.EnumerateFiles(targetFolder, "*.jpg")
于 2013-10-04T08:26:07.260 回答
0

您可以将第二个参数传递给Directory.EnumerateFiles搜索模式:

Dim targetFolder As String = "C:\Data\"    
Dim imagefiles = From file In Directory.EnumerateFiles(targetFolder, "*.jpg")

For Each f In imagefiles
    'do something
Next

这将枚举所有以 .jpg 结尾的文件。但是,没有明确的“所有图像文件”列表。您需要自己定义一个对您的应用程序有意义的搜索模式。

于 2013-10-04T08:26:28.073 回答