是否有可靠的方法在Windows平台上识别文件的文件类型?
我继承了一个使用Shell32 GetDetailsOf函数查询文件类型的程序,该函数返回本地化字符串并在使用非英语系统时导致错误(例如,在德语系统上GetDetailsOf(item,9)返回“ Bild“而不是”Image“)。
答案 0 :(得分:2)
使用文件类型的文本描述不是识别特定类型文件的可靠方法。正如您已经注意到,描述字符串从一种语言变为另一种语言,但它们也可以根据用户安装的软件在一种语言中进行更改(作为一个组成示例,.jpg文件可能具有描述“JPEG图像”如果用户安装了声明文件类型并更改说明的软件,则在另一个系统上使用“Adobe Photoshop Image”。
相反,识别文件类型的最佳方法是查看文件的扩展名(在我们的示例中为.jpg
)。你用它做什么取决于你,取决于你的应用程序。您可能只有一个硬编码的扩展列表,您可以使用它,或者更通用,您可以在注册表中查找文件类型的“感知类型”:
HKEY_CLASSES_ROOT \ .JPG \ PerceivedType
查看该值是否设置为“图像”,“音频”等