Csharp/C#教程:检查文件是否是C#中的媒体文件分享


检查文件是否是C#中的媒体文件

我需要一种方法可以告诉我文件是图像,音频还是video文件。 我可以用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等),则它匹配video,音频或图像文件。 这不是那么强大,因为我可以轻松地命名扩展名为.avi或.jpg的文本文件,但这并不一定使它成为媒体文件。

方法2:更难 – 解析文件头。 例如,在CodeProject上有一个C#RIFF Parser或这个关于从JPEG图像中提取IPTC头信息的 CodeProject文章

你最终必须使用这两种方法的组合。 您提出的大部分内容已经内置在.NET框架中。

是的,你可以,但除非你使用组件来做它,你需要编写代码,至少加载这些文件的标题,以检查它们是否没有损坏。 如果文件以可靠的方式存储,您可以只检查其文件扩展名

 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 } 

您始终可以检查文件扩展名。

上述就是C#学习教程:检查文件是否是C#中的媒体文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/983902.html

(0)
上一篇 2021年12月19日
下一篇 2021年12月19日

精彩推荐