2014-04-25 23 views
0

我需要從文件夾中的文件創建一個array()。以下是我如何獲取文件夾中的所有文件的示例。在vb.net中,如何從基於逗號分隔字符串的目錄中獲取文件?

Dim filesList = New DirectoryInfo("MyPath").GetFiles("*", SearchOption.TopDirectoryOnly).Where(Function(f) Not f.Attributes.HasFlag(FileAttributes.Hidden)).[Select](Function(f) New AClassNameHere(f)).ToArray() 

我想做完全相同的事情,但只能得到逗號分隔的字符串中存在的文件。

Dim myFiles as String = "filename1.jpg,filename2.jpg,filename3.jpg" 

當你看到AClassNameHere是一類我需要發送的每個文件,它也將是巨大的,如果我知道如何發送額外的數據有關的每個文件,就像它的類型,大小等

謝謝親切!

回答

1

您可以通過添加額外的.Where()過濾

Dim myFiles as String = "filename1.jpg,filename2.jpg,filename3.jpg" 
Dim filesList = New DirectoryInfo("MyPath") 
       .GetFiles("*", SearchOption.TopDirectoryOnly) 
       .Where(Function(f) Not f.Attributes.HasFlag(FileAttributes.Hidden)) 
       .Where(Function(f) myFiles.Contains(f.Name)) 
       .[Select](Function(f) New AClassNameHere(f)).ToArray() 

一個更好的選擇縮小查詢結果將是確保所有文件名遵循一個模式。

New DirectoryInfo("MyPath").GetFiles("filename*.jpg", SearchOption.TopDirectoryOnly) 
+0

這簡直太棒了。這正是我所期待的。謝謝。我正在構建的文件控制允許不同的文件類型,所以我堅持要根據用戶在設置中選擇的文件類型來搜索文件的全名。非常感謝。 – user1447679

+0

這種方法的問題是'GetFiles(「*」)'將獲得所有文件,丟棄只在創建完成後才需要的'FileInfo'對象。當目標目錄中有大量文件時,這會降低您的應用程序的速度。 –

0

使用此...

Dim Files() As String 
    Files= filesList.Split(",") 

    For each File In Files 
    Msgbox(File) 
    Next 
+0

這不是我想到的,但我很欣賞它。我希望使用逗號分隔的字符串作爲搜索表達式,而不是在數組中循環。 – user1447679

相關問題