<分区>
我正在使用 qt 开发 C++ 代码的接口(interface),所以我想知道如何检查用户从打开的文件打开它的文件类型,因为程序只接受视频文件。如果文件不是视频文件,我想显示错误消息。
提前致谢:)
<分区>
我正在使用 qt 开发 C++ 代码的接口(interface),所以我想知道如何检查用户从打开的文件打开它的文件类型,因为程序只接受视频文件。如果文件不是视频文件,我想显示错误消息。
提前致谢:)
最佳答案
文件“类型”只是一种简化。在现代操作系统上,从操作系统的角度来看,所有磁盘文件都是平等的(它们只是字节序列),文件的“类型”仅取决于读取/写入这些文件的程序。在过去,许多操作系统用于区分例如。介于二进制文件和文本文件之间,但那些时代几乎完全消失了。
使文件类型“明显”的常用方法是使用命名约定...即名称以“.mpg”结尾的文件可能是使用 MPEG 标准编码的视频文件,或者“.txt"文件可能包含人类可读的文本。
因此您有两个选择...或者您只是根据文件名过滤文件列表(例如,您只接受以“.mp4”、“.mpg”、“.mpeg”、“.avi”结尾的文件, ".wmv", ".webm", ".ogg"... - 仅举几个常见的视频文件扩展名)或者你只是尝试将任何文件传递给程序,程序将决定它是否可以播放它或不。如果程序是一个好的程序,如果它不能理解特定的文件格式,它就会优雅地失败,而不仅仅是崩溃。
请注意,即使您使用的是 Qt(一个可移植的库),如果可接受的视频文件编码取决于操作系统甚至单个安装(因为视频/编解码器编解码器),我也不会感到惊讶通常是系统上可能安装或未安装的“插件”)。
如果您真的想限制文件名,那么请记住添加一种方法来选择扩展名不在列表中的文件。每次你在你的程序中列举东西时,你首先是有点傲慢(一个列表意味着你知道所有可能的情况,你认为你真的知道吗?)并且你正在为 future 的兼容性设置障碍(例如下一版本的播放器程序也可以处理 .wzz 视频文件,但由于允许扩展名列表中的愚蠢限制,您的程序将无法播放它们。
关于c++ - 打开错误文件的错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6087264/