首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查文件是否为C#中的媒体文件

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

Stack Overflow用户
提问于 2009-12-30 00:19:29
回答 5查看 18.8K关注 0票数 11

我需要一个方法,可以告诉我一个文件是图像,音频或视频文件。我能用C#做到这一点吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-30 00:24:46

这取决于您希望它有多健壮。

最简单的方法是检查扩展,如下所示:

代码语言:javascript
复制
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 :对于那些真正想要LINQ的人,这里是:

代码语言:javascript
复制
return mediaExtensions.Contains(Path.GetExtension(path), StringComparer.OrdinalIgnoreCase);

请注意,文件的扩展名不是其内容的可靠指示器;任何人都可以重命名文件并更改其扩展名。

如果您没有该扩展名,或者您不信任它,您可以读取文件的开头,并查看它是否与常见媒体格式的文件签名匹配。

票数 30
EN

Stack Overflow用户

发布于 2009-12-30 00:24:00

方法1: name文件名解析。如果文件名匹配已知的媒体文件类型列表(即jpg gif wmv avi mp4等),则它匹配视频、音频或图像文件。这不是很健壮,因为我可以轻松地将扩展名为.avi或.jpg的文本文件命名为文本文件,但这并不一定使其成为媒体文件。

方法2: Harder解析文件头。例如,在CodeProject上有一篇关于Extracting IPTC header information from JPEG imagesC# RIFF Parser或这篇CodeProject文章

最终,您将不得不组合使用这两种方法。您所询问的大部分内容都已经内置于.NET框架中。

票数 9
EN

Stack Overflow用户

发布于 2009-12-30 00:24:10

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

代码语言:javascript
复制
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
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1975440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档