有没有一种可靠的方法可以跨Windows平台识别文件的文件类型?
我继承了一个使用Shell32 GetDetailsOf函数查询文件类型的程序,该函数返回本地化的字符串,如果使用非英语系统,则会导致错误(例如,在德语系统GetDetailsOf(item,9)上,返回"Bild“而不是"Image")。
发布于 2013-03-26 03:51:46
使用文件类型的文本描述不是标识特定文件类型的可靠方法。正如您已经注意到的,描述字符串随着语言的不同而不同,但它们也可以在一种语言内根据用户安装的软件而变化(作为一个虚构的示例,如果用户安装了声明文件类型并更改描述的软件,则.jpg文件在一个系统上可能具有"JPEG image“描述,而在另一个系统上可能具有"Adobe Photoshop Image”描述)。
相反,识别文件类型的最好方法是查看文件的扩展名(在我们的示例中为.jpg)。然后,如何处理它取决于您的应用程序。您可能只有一个使用的扩展名的硬编码列表,或者更通用的是,您可以在注册表中查找文件类型的“感知类型”:
HKEY_CLASSES_ROOT.jpg\PerceivedType
查看该值是否设置为"image“、"audio”等。
https://stackoverflow.com/questions/15620930
复制相似问题