我需要一種能告訴我文件是圖像,音頻還是視頻文件的方法。我可以用C#做這個嗎?檢查文件是否是C#中的媒體文件
回答
這取決於您希望它有多強大。
做到這一點最簡單的方法是檢查擴展,像這樣:
static string[] mediaExtensions = {
".PNG", ".JPG", ".JPEG", ".BMP", ".GIF", //etc
".WAV", ".MID", ".MIDI", ".WMA", ".MP3", ".OGG", ".RMA", //etc
".AVI", ".MP4", ".DIVX", ".WMV", //etc
};
static bool IsMediaFile(string path) {
return -1 != Array.IndexOf(mediaExtensions, Path.GetExtension(path).ToUpperInvariant());
}
編輯:對於那些誰真的想LINQ,那就是:
return mediaExtensions.Contains(Path.GetExtension(path), StringComparer.OrdinalIgnoreCase);
注意文件的擴展名不是其內容的可靠指標;任何人都可以重命名文件並更改其擴展名。
如果您沒有擴展名,或者您不信任擴展名,您可以閱讀該文件的開頭,並查看它是否與常見媒體格式的文件簽名匹配。
方法1:最簡單 - 文件名解析。如果文件名與媒體文件類型的已知列表相匹配(即,jpg gif wmv avi mp4等),則它匹配視頻,音頻或圖像文件。這並不健壯,因爲我可以輕鬆地命名帶有.avi或.jpg擴展名的文本文件,但這並不一定是媒體文件。
方法2:更難 - 解析文件頭。例如,在CodeProject上有一個C# RIFF Parser或這個CodeProject上的文章Extracting IPTC header information from JPEG images
你最終將不得不使用這兩種方法的組合。你所要求的大部分內容已經內置到了.NET框架中。
方法2的另一個問題是,你必須有一個解析器爲每個文件類型和其他文件類型將不會被識別,直到你實現他們的解析器... – GalacticCowboy 2009-12-29 16:57:48
@GC:是的,正確 – 2009-12-29 17:08:22
是的,你可以,但除非你使用一個組件來做到這一點,你需要編寫代碼至少加載這些文件的頭文件,以檢查它們是否沒有損壞。如果文件以可靠的方式存儲,您可以只檢查其文件擴展名
foreach(string file in Directory.GetFiles("c:\\MyDir\\")
{
if(file.EndsWith("jpg", false, null))
//treat as image file
else if(file.EndsWith("avi", false, null))
//treats as avi video
//and so on
}
- 1. 如何檢查文件是否是C++中的常規文件?
- 2. 如何檢查媒體元素是否播放文件?
- 3. C++檢查文件是否爲空
- 4. C檢查文件是否存在
- 5. 檢查Excel文件是否爲空C#
- 6. c#,檢查文件是否正確
- 7. 如何檢查文件是否是C++中的圖像類型?
- 8. 如何檢查文件是否是C#中的SQLite數據庫?
- 9. 如何檢查給定文件是否是C++中的有效視頻文件?
- 10. 檢查文件路徑是否正確,但不檢查文件是否存在
- 11. WIndows Phone 8.1檢查新媒體文件
- 12. clearcanvas檢查文件是否是dicomdir
- 13. 如何檢查以前選擇的媒體文件是否存在?
- 14. Python:檢查「兩個」.doc文件是否是相同的文件?
- 15. 檢查是否是文件或文件夾上的FTP
- 16. 如何檢查上傳的文件是否是XLS文件?
- 17. 檢查JList中是否存在文件
- 18. 檢查文件中是否存在行
- 19. 檢查子文件的子文件中是否存在值
- 20. 如何檢查文件是否是二進制文件?
- 21. ftplib檢查文件是否是文件夾?
- 22. 如何檢測文件是否不是c中的文本文件#
- 23. Android Marshmallow 6.0.1,如何檢查文件是否來自內容URI的媒體文件?
- 24. 檢查文件是否在C中唯一的好方法
- 25. 如何檢查文件是否存在於war文件中?
- 26. 如何檢查chm文件中是否存在子文件?
- 27. Python:檢查新文件是否在文件夾中
- 28. 如何檢查文件夾中是否已存在文件
- 29. PHP - 檢查一個文件夾中是否存在文件
- 30. 檢查文件夾中是否存在文件actionScript 3
澄清的要點 - 你想知道它是否屬於任何類別(「是媒體文件」),或者它屬於哪個類別(「是圖像/音頻/視頻」 )? – GalacticCowboy 2009-12-29 16:59:51
它並沒有真正有所作爲。 – SLaks 2009-12-29 20:15:43
@SLaks:正確的,它幾乎只是語義,但解決方案需要比僅僅一組擴展稍微更智能。它必須將該擴展映射到更高層次的含義。 – GalacticCowboy 2010-01-05 18:14:16