我需要编写一个程序,允许我读取目录中每个文件的名称,以及文件的类型.虽然我可以获取文件名,但我无法得到我应该如何找到该类型.我唯一能想到的就是使用它的元数据,但我甚至不确定如何开始使用它.我正在尝试一个独立于操作系统的解决方案,但如果它仅适用于Windows或Linux,我会很高兴.
注意:请不要提供涉及搜索点的解决方案,以及介于两者之间的任何内容.这些天,几乎没有文件.pdf附加或附加任何文件.当你阅读文件名时,你得到的只是sample,而不是sample.txt.
另外,如果它与Qt不兼容,我会很感激,如果你能在答案中提到这一点,那么我可以采取适当的行动(因为GUI我正在研究Qt).
作为@CMLDMR指出,QFileInfo::suffix()和QFileInfo::completeSuffix()方法将返回文件扩展名.但是,文件扩展名可能会被省略,无效,未知等.
所以,根据你的实际问题,你想知道的文件格式,而不是它的扩展名,如所陈述的第一次修订.
Qt 5有一节课QMimeDatabase.它允许您通过其内容发现文件MIME类型.假设我们有一个mpeg没有扩展名的音乐文件:
QMimeDatabase db;
QMimeType mime = db.mimeTypeForFile("C:/music", QMimeDatabase::MatchContent);
qDebug() << mime.name(); // Name of the MIME type ("audio/mpeg").
qDebug() << mime.suffixes(); // Known suffixes for this MIME type ("mp3", "mpga").
qDebug() << mime.preferredSuffix(); // Preferred suffix for this MIME type ("mp3").
Run Code Online (Sandbox Code Playgroud)
如果您仍希望优先考虑文件扩展名并仅在后缀不存在时解析文件内容,请省略QMimeDatabase::MatchContent参数 - QMimeDatabase::MatchDefault将使用默认值.请参阅QMimeDatabase::MatchMode更多信息.
请注意,Qt对不同的操作系统使用不同的MIME数据库,因此结果可能会有所不同.
小智 6
QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.suffix(); // ext = "gz"
Run Code Online (Sandbox Code Playgroud)
后缀功能是给你一个文件扩展名。
或者
QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.completeSuffix(); // ext = "tar.gz"
Run Code Online (Sandbox Code Playgroud)
您可以使用其他任何一种适合您的方式。此代码独立但 Qt。
详情链接
| 归档时间: |
|
| 查看次数: |
4706 次 |
| 最近记录: |