簡體   English   中英

檢查文件是否有多個擴展名?

[英]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.ImageMy.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM