如何确定文件类型?

Ser*_*gey 5 c# audio mp3 file

我需要知道我的文件是否是音频文件:mp3,wav等...
如何做到这一点?

Joe*_*oey 5

那么,最强大的方法是为你想要检测的文件类型编写一个解析器然后尝试 - 如果没有错误,它显然是你尝试的类型.然而,这是一种昂贵的方法,但它确保您可以成功加载文件,因为它还将检查文件的其余部分是否具有语义健全性.

一个便宜得多的变体就是寻找"魔术"字节 - 开始时的签名或文件的已知偏移量.例如,如果文件以ID3标签开头,您可以合理地确定它是MP3文件.如果文件以文件开头RIFF¼?? WAVEfmt,那么它就是WAV文件.但是,这样的检测不能保证文件确实属于那种类型 - 它可能只是签名并跟随垃圾.


Jon*_*nVD 0

您可以使用文件扩展名来找出它:

using System.IO;

class Program
{
    static void Main()
    {
        string filepath = @"C:\Users\Sam\Documents\Test.txt";

        string extension = Path.GetExtension(filepath);
        if (extension  == ".mp3")
        {
            Console.WriteLine(extension);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

文件扩展名是操作系统确定它正在处理的文件类型的第一个调用点,如果您确实想 100% 了解文件类型,唯一的方法就是读入文件。但这有一个问题,图像文件很容易,因为它们包含易于阅读的格式的标题,但是使用完全可变的文件类型可能会变得更加复杂。

您可以在旧帖子上查看帖子以获得一些帮助。是一篇关于仅查找媒体文件类型的文章。

最终这取决于您尝试这样做的原因。