【Qt】正确判断文件、文件夹是否存在的方法
来源:互联网 发布:什么是美工设计助理 编辑:程序博客网 时间:2024/06/06 14:26
一直对Qt的isFile、isDir、exists这几个方法感到混乱,不知道到底用哪个,网上搜了下资料,也是用这几个方法
但是都没有对其深究,经过测试发现会存在问题,先看看下面的测试代码
- {
- QFileInfo fi("C:/123"); // 目录存在
- qDebug() << fi.isFile(); // false
- qDebug() << fi.isDir(); // true
- qDebug() << fi.exists(); // true
- qDebug() << fi.isRoot(); // false
- qDebug() << QFile::exists("C:/123"); // true
- qDebug() << QDir("C:/123").exists(); // true
- fi.setFile("C:/ABC"); // 目录不存在
- qDebug() << fi.isFile(); // false
- qDebug() << fi.isDir(); // false
- qDebug() << fi.exists(); // false
- qDebug() << fi.isRoot(); // false
- qDebug() << QFile::exists("C:/ABC"); // false
- qDebug() << QDir("C:/ABC").exists(); // false
- fi.setFile("C:/"); // 存在的驱动器
- qDebug() << fi.isFile(); // false
- qDebug() << fi.isDir(); // true
- qDebug() << fi.exists(); // true
- qDebug() << fi.isRoot(); // true
- qDebug() << QFile::exists("C:/"); // true
- qDebug() << QDir("C:/").exists(); // true
- fi.setFile("Z:/"); // 不存在的驱动器
- qDebug() << fi.isFile(); // false
- qDebug() << fi.isDir(); // false
- qDebug() << fi.exists(); // false
- qDebug() << fi.isRoot(); // false
- qDebug() << QFile::exists("Z:/"); // false
- qDebug() << QDir("Z:/").exists(); // false
- fi.setFile("C:/123.lnk"); // 快捷方式存在且指向的文件也存在
- qDebug() << fi.isFile(); // true
- qDebug() << fi.isDir(); // false
- qDebug() << fi.exists(); // true
- qDebug() << fi.isRoot(); // false
- qDebug() << QFile::exists("C:/123.lnk"); // true
- qDebug() << QDir("C:/123.lnk").exists(); // false
- fi.setFile("C:/456.lnk"); // 快捷方式存在但指向的文件不存在
- qDebug() << fi.isFile(); // false
- qDebug() << fi.isDir(); // false
- qDebug() << fi.exists(); // false
- qDebug() << fi.isRoot(); // false
- qDebug() << QFile::exists("C:/456.lnk"); // false
- qDebug() << QDir("C:/456.lnk").exists(); // false
- }
可以看到,容易让人感到混乱的是exists方法,这个方法是通用的判断方法,可以看成是这样的表达式
exists() == (isFile() || isDir())
这也是我想说明的问题,网上一些博文中提出的判断文件或文件夹用exists方法是不严谨的
比如你的本意是判断文件是否存在,但文件不存在,而恰巧有个同名的文件夹,那么exists也会返回true。文件夹也是同理
根据上面的代码作出的一点总结
准确判断文件是否存在
1.用QFileInfo::isFile()方法
准确判断文件夹是否存在
1.用QFileInfo::isDir()方法
2.用QDir::exists()方法
不确定字符串是文件还是文件夹路径
1.用QFileInfo::exists()方法
2.用QFile::exists()方法
0 0
- Qt:正确判断文件、文件夹是否存在的方法
- 【Qt】正确判断文件、文件夹是否存在的方法
- 【Qt】正确判断文件、文件夹是否存在的方法
- Qt - 正确判断文件、文件夹是否存在的方法
- 您现在的位置:首页 > 技术博客 > 正文 Qt - 正确判断文件、文件夹是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- c# 判断文件是否存在某个文件夹的方法
- C语言判断文件夹或者文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- Linux下判断文件或文件夹是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- C#中判断文件夹或文件是否存在的方法
- C语言判断文件夹或者文件是否存在的方法
- AngularJS with MVC4 CRUD
- exists 和 in 的区别
- Java enum的用法详解
- UVA - 1508 Equipment DFS
- 网络游戏程序员须知 目录
- 【Qt】正确判断文件、文件夹是否存在的方法
- py3 使用TCP SOCKET 发送json字符串给服务器测试例程代码
- c语言数据类型
- ARC模式下的单例写法。
- Pushy is a Java library for sending APNs (iOS and OS X) push notifications
- AFNetworking2.0后Post请求报错
- EA中class属性排序
- 数据结构(陈越)PAT练习题 第九周:散列查找
- 1445 - Cubist Artwork