如何判断文件类型?我需要知道我的文件是否是音频文件:mp3、wav等...该怎么做?好吧,最稳健的方法是为您要检测的文件类型编写一个解析器,然后尝试——如果您没有收到任何错误,那显然是您尝试的文件类型。然而,这是一种昂贵的方法,但它确保您可以成功加载文件,因为它还会检查文件的其余部分的语义完整性。一个更便宜的变体是寻找“魔术”字节-开头的签名或文件的已知偏移量。例如,如果一个文件以ID3标签开头,您可以合理地确定它是一个MP3文件。如果文件以RIFF???WAVEfmt开头,则它是WAV文件。然而,这样的检测并不能保证文件确实是那种类型——它可能只是被签名并且后面跟着垃圾。虽然您可以使用扩展名来合理猜测文件是什么,但不能保证100%的时间都能正常工作。如果您的目标是Windows,它会在99.9%的时间内运行,因为Windows会跟踪哪个文件是什么类型。如果您从非Windows源获取文件,唯一可靠的方法是打开文件并查找可以明确识别它的特定字符串或字节集。例如,您可以在mp3文件中查找ID3标签:ID3v1标签占用128个字节,以字符串TAG开头。或ID3v2标签的大小可变,通常出现在文件的开头以帮助流式传输。你能走多远取决于你希望你的解决方案有多稳健,并依赖于始终存在的标题或模式。这样做可以帮助防止恶意内容,即有人将一段恶意软件作为mp3文件(比方说)发布,并希望它只是由易受攻击的程序运行(可能是缓冲区溢出)。阅读这篇文章。您最终将第一个(最多)256个字节的数据从文件传递到FindMimeFromData(Urlmon.dll的一部分)。您可以使用文件扩展名来弄清楚:usingSystem.IO;类程序{staticvoidMain(){stringfilepath=@"C:UsersSamDocumentsTest.txt";字符串扩展名=Path.GetExtension(文件路径);如果(extension==".mp3"){Console.WriteLine(extension);文件扩展名是操作系统确定它正在处理的文件类型的第一个调用点,如果你真的想知道100%的文件类型,那么唯一的方法就是读入文件。但这有一个问题,图像文件很容易,因为它们包含一个非常易读的标题,但对于完全可变的文件类型,它可能会变得有点复杂。您可以在旧帖子上查看这篇帖子以获得一些帮助。这是一篇关于仅查找媒体文件类型的帖子。最终,这取决于你为什么这样做。以上就是C#学习教程:如何判断文件类型?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注—Path.GetExtension(PathToFile)本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
