1. 判断文件夹是不是存在
参数说明:
QString fullPath;//文件夹全路径
/*方法1*/
bool isDirExist(QString fullPath)
{
    QDir dir(fullPath);
    if(dir.exists())
    {
      return true;
    }
    return false;
}
/*方法2*/
bool isDirExist(QString fullPath)
{
    QFileInfo fileInfo(fullPath);
    if(fileInfo.isDir())
    {
      return true;
    }
    return false;
}

2. 判断文件是不是存在
参数说明:
QString fullFileName;//文件全路径(包含文件名)
/*方法1*/
bool isFileExist(QString fullFileName)
{
    QFileInfo fileInfo(fileFullName);
    if(fileInfo.isFile())
    {
        return true;
    }
    return false;
}

3、判断文件或文件夹是不是存在(即不确定字符串是文件还是文件夹路径)
参数说明:
QString fullFilePath;//路径名
/*方法1*/
bool isFileExist(QString fullFilePath)
{
    QFileInfo fileInfo(fullFilePath);
    if(fileInfo.exists())
    {
        return true;
    }
    return false;
}
/*方法2*/
bool isFileExist(QString fullFilePath)
{
    QFile file(fullFilePath);
    if(file.exists())
    {
        return true;
    }
    return false;
}

4、判断文件夹是否存在,不存在则创建
/*方法1*/
bool isDirExist(QString fullPath)
{
    QDir dir(fullPath);
    if(dir.exists())
    {
      return true;
    }
    else
    {
       bool ok = dir.mkdir(fullPath);//只创建一级子目录,即必须保证上级目录存在
       return ok;
    }
}
/*方法1*/
bool isDirExist(QString fullPath)
{
    QDir dir(fullPath);
    if(dir.exists())
    {
      return true;
    }
    else
    {
       bool ok = dir.mkpath(fullPath);//创建多级目录
       return ok;
    }
}

5、以下为摘录的其他网络测试代码
{
    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()方法

Qt 判断文件或文件夹是否存在及创建文件夹相关推荐

  1. python判断文件或文件夹是否存在、创建文件夹

    python判断文件或文件夹是否存在.创建文件夹 1.判断文件或文件夹是否存在 import os #返回值是个布尔类型的 os.path.exists("G:/软件/文件测试/test.p ...

  2. java 创建文件夹的方法_Java创建文件夹的方法

    Java创建文件夹的方法 /** * 用于创建文件夹的方法 * @param mkdirName */ public void mkdir(String mkdirName) { try { File ...

  3. PHP判断文件夹是否存在和创建文件夹的方法

    (PHPmkdir如何创建多级目录) 在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其实不是那样,单个的MKDIR只能创建一级目录,对于多级的就不行了, ...

  4. python怎么创建txt文件啊_python根据txt文本批量创建文件夹

    前言 前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrl+shift+n还可以接受吧,可是一次就要创建几百个文件夹,这就有点方方了.所以我写了 ...

  5. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  6. 在服务器上创建文件夹,在服务器上创建文件夹

    在服务器上创建文件夹 内容精选 换一换 在迁移之前必须先创建输入文件夹和输出文件夹,并将待迁移的所有SQL脚本复制到输入文件夹中.Linux系统操作如下:由于DSC批量无序地读取输出文件夹,因此,建议 ...

  7. Qt5 实现文件复制并在指定路径下创建文件夹

    最近在基于qt5平台的应用界面上想实现本地选择文件,并把文件拷贝到指定路径下.找到以下这篇文章参考,参考其中几个函数的写法实现了想要的功能,故记录一下,方便以后查找参考. 我在头文件中定义几个变量: ...

  8. 新建文件夹命令 linux,linux创建文件夹命令是什么

    linux创建文件夹命令是mkdir,语法为[mkdir (选项)(参数)],其中Z为设置安全上下文,当使用SELinux时有效,version显示版本信息. 本文操作环境:linux2.6.32系统 ...

  9. Php创建文件夹mkdir,PHP mkdir创建文件夹实现方法解析

    这篇文章主要介绍了PHP mkdir创建文件夹实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在开始之前,我先说明一下,可能许多朋友与我 ...

  10. synology服务器如何建文件夹,Synology Assistant如何创建共享文件夹?新建共享文件夹流程介绍...

    作为群晖科技官方开发的局域网安装助手,能够安装并管理好 DiskStation 的资源,建立专属的共享文件夹,下面就跟小编来了解下吧. 创建共享文件夹: 首先我们需要打开文件工作站(File Stat ...

最新文章

  1. 转:[大数据竞赛]协同过滤在这个问题上是否work
  2. 一文详解为什么Serverless比其他软件开发方法更具优势
  3. Android Binder 分析——数据传递者(Parcel)
  4. 【Boost】boost库asio详解2——strand与io_service区别
  5. 使用 OAuth2-Server-php 搭建 OAuth2 Server
  6. 大气的压力竟然能吊起相扑力士!?
  7. live2dviewer android,live2dviewerex安卓版
  8. JAVA jdk环境搭建
  9. 再见!热血活力的深圳
  10. S32K的flexcan组件can fd使用
  11. win10pe命令打开计算机,win10系统制作PE启动盘的操作方法
  12. IDEA 2019 激活码(注册码)
  13. 使用Navicat备份指定数据库表
  14. Ubuntu分区扩容
  15. 统计字符串中每个字符的出现字数
  16. 骨龄仪存储卡损坏处理方案
  17. Debian下载镜像地址
  18. 一个简单的判断三角形形状的C程序
  19. CloudDrive不能用了还有其他方法么
  20. 为什么越来越多博士逃离科研?

热门文章

  1. Linux 命令(34)—— vim 命令
  2. dbeaver can't connect HBase1.2 using phoenix driver #1863
  3. 移动互联网消息推送原理:长连接+心跳机制(MQTT协议)
  4. [原创]Eclipse 安卓开发几个异常的处理办法
  5. 又回来了~工作告一段落了,终于有时间看书写点东西了
  6. pl sql练习(3)
  7. request.getRequestURL()和request.getRequestURI()区别
  8. linux之抓包神器tcpdump
  9. linux之crontab使用技巧
  10. android os FileUriExposedException file storage emulated 0 test tx