[英]Check file against multiple extensions?
我想知道是否可以檢查文件是否與設置擴展名列表匹配。 目前,我有一個工作代碼,它僅檢查文件以查看其是否具有.txt .jpg或.mp3
例
If (Path.GetExtension(f).ToLower() = ".txt") Then
' It's a .txt file
' MsgBox("I am a Txt Document")
b.Image = My.Resources.Text_Img
ElseIf (Path.GetExtension(f).ToLower() = ".jpg") Then
b.Image = My.Resources.Img_Img
Else
b.Image = My.Resources.Folder_Img
End If
這段代碼只是為快捷方式設置圖像。 我希望能夠檢查文件是否比txt但.doc .log匹配更多,然后所有視頻類型mp4 avi mpg。 然后所有音頻類型mp3 ogg flacc acc
嘗試過但失敗了
ElseIf (Path.GetExtension(f).ToLower() = ".jpg" & ".png" & ".jpeg" & ".tiff") Then
b.Image = My.Resources.Img_Img
End If
是否有可能不想將所有100+擴展名添加到每個都有自己的If語句中。 在此先感謝您。 -擔
如果要避免字典路由(沒有真正的理由,除了這是一種替代方法),可以使用內聯數組檢查每組擴展。
Dim extension = Path.GetExtension(f).ToLower
If {".txt"}.Contains(extension) Then
b.Image = My.Resources.Text_Img
ElseIf {".jpg", ".png", ".tif"}.Contains(extension) Then
b.Image = My.Resources.Img_Img
Else
b.Image = My.Resources.Folder_Img
End If
我敢肯定,使用RegEx和各種LINQ或其他怪異的方法可以使用完全有效且美觀的方法!
而不是If可以從值字典中查找代碼。 將字典聲明為:
Dim dictionary As New Dictionary(Of String, TheResourceType)
dictionary.Add(".txt", My.Resources.Text_Img)
dictionary.Add(".jpg", My.Resources.Img_Img)
dictionary.Add(".png", My.Resources.Img_Img)
dictionary.Add(".jpeg", My.Resources.Img_Img)
dictionary.Add(".tiff", My.Resources.Img_Img)
問題尚不清楚b.Image
或My.Resources...
值的類型,因此TheResourceType
根據需要更改TheResourceType
。
使用以下代碼訪問值:
Dim ext As Path.GetExtension(f).ToLower()
If dictionary.ContainsKey(ext) Then
b.Image = dictionary.Item(ext)
Else
b.Image = My.Resources.Folder_Img
End If
做這樣的事情:
Dim extension As String = Path.GetExtension(f).ToLower()
If extension.Equals("txt") Then
b.Image = My.Resources.Text_Img
ElseIf extension.Equals("jpg") OrElse extension.Equals("png") OrElse extension.Equals("tif") Then
b.Image = My.Resources.Img_Img
Else
b.Image = My.Resources.Folder_Img
End If
在上面的代碼中,僅一次調用Path.GetExtension()方法,而不是每次檢查擴展名。 其次,它使用字符串內置Equals()方法檢查擴展名。 第三,針對多個擴展名進行檢查的語法是固定的-查看有關圖像文件的第二個條件-它與您的稍有不同。
您可能已經考慮過這一點,但是另一個選擇(如果這是普遍需要)將是創建具有公共擴展名的數據庫表,然后編寫一個函數來查詢該表,並將Path.GetExtension作為參數傳遞。
可以在以下位置找到此類數據庫表的詳盡擴展列表: http : //www.freeformatter.com/mime-types-list.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.