• qt 判断文件是否存在


    1. 判断文件夹是不是存在

     

     1 QString fullPath;//文件夹全路径
     2 /*方法1*/
     3 bool isDirExist(QString fullPath)
     4 {
     5     QDir dir(fullPath);
     6     if(dir.exists())
     7     {
     8       return true;
     9     }
    10     return false;
    11 }
    12 /*方法2*/
    13 bool isDirExist(QString fullPath)
    14 {
    15     QFileInfo fileInfo(fullPath);
    16     if(fileInfo.isDir())
    17     {
    18       return true;
    19     }
    20     return false;
    21 }

    2. 判断文件是不是存在

     

     1 QString fullFileName;//文件全路径(包含文件名)
     2 /*方法1*/
     3 bool isFileExist(QString fullFileName)
     4 {
     5     QFileInfo fileInfo(fileFullName);
     6     if(fileInfo.isFile())
     7     {
     8         return true;
     9     }
    10     return false;
    11 }

    3、判断文件或文件夹是不是存在(即不确定字符串是文件还是文件夹路径)

     View Code

    4、判断文件夹是否存在,不存在则创建

     

     1 /*方法1*/
     2 bool isDirExist(QString fullPath)
     3 {
     4     QDir dir(fullPath);
     5     if(dir.exists())
     6     {
     7       return true;
     8     }
     9     else
    10     {
    11        bool ok = dir.mkdir(fullPath);//只创建一级子目录,即必须保证上级目录存在
    12        return ok;
    13     }
    14 }
    15 
    16 /*方法2*/
    17 bool isDirExist(QString fullPath)
    18 {
    19     QDir dir(fullPath);
    20     if(dir.exists())
    21     {
    22       return true;
    23     }
    24     else
    25     {
    26        QDir dir1;
    27        bool ok = dir1.mkpath(fullPath);//创建多级目录
    28        return ok;
    29     }
    30 }

    5、以下为摘录的其他网络测试代码

     View Code

    可以看到,容易让人感到混乱的是exists方法,这个方法是通用的判断方法,可以看成是这样的表达式
    exists() == (isFile() || isDir())

    也就是说判断文件或文件夹是否存在单纯用exists方法是不严谨的
    比如你的本意是判断文件是否存在,但文件不存在,而恰巧有个同名的文件夹,那么exists也会返回true。文件夹也是同理

    根据上面的代码作出的一点总结

    准确判断文件是否存在
    1.用QFileInfo::isFile()方法

    准确判断文件夹是否存在
    1.用QFileInfo::isDir()方法
    2.用QDir::exists()方法

    不确定字符串是文件还是文件夹路径
    1.用QFileInfo::exists()方法
    2.用QFile::exists()方法

     

  • 相关阅读:
    CUDA编程- __syncthreads()函数
    业主方怎么管理固定资产
    <蓝桥杯软件赛>零基础备赛20周--第2周
    Linux系统运维脚本:批量创建linux用户和密码(读取文件中的账号和密码来批量创建用户)
    2022牛客多校3 A-Ancestor(求LCA前后缀)
    顺序表(删除)
    【AAC文件数据解析和ADTS frame】
    Windows内核下pid,handle,eprocess之间相互转换的方法
    使用二分法来解决的问题
    木瓜蛋白酶的特点及相关特异性介绍
  • 原文地址:https://blog.csdn.net/delphigbg/article/details/127754894