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()方法

qdir 自动创建多级目录_Qt 判断文件或文件夹是否存在及创建文件夹相关推荐

  1. 最简单的创建多级目录文件夹

    最简单的创建多级目录文件夹 ,莫过于使用SHCreateDirectoryEx,不用CreateDirectory一级一级创建文件夹,下面示例(在VS2010下): 新建一个Wind32的window ...

  2. 怎样在hdfs上创建多级目录文件夹_【Hadoop】如何在hdfs根目录下创建文件夹

    shell命令创建文件夹 启动hdfs,终端输入:start-dfs.sh 在hdfs中创建一个input文件夹:hadoop fs -mkdir /input/1 使用参数-p创建多级目录:hado ...

  3. php创建多级目录完整封装类操作

    创建多级目录函数中调用创建指定下的指定文件的函数: public function create_dir($dir,$mode=0777){return is_dir($dir) or ($this- ...

  4. php 从根目录 开始创建,php创建多级目录的方法

    php创建多级目录的方法 本文实例讲述了php创建多级目录的方法.分享给大家供大家参考.具体实现方法如下: /* 写出一个能创建多级目录的PHP函数 */ function createdirlist ...

  5. PHP递归创建多级目录(一道面试题的解题过程)

    今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...

  6. os模块创建多级目录

    背景 python的os模块是可以动态创建目录的,但是很多人只了解单级目录的创建方法,其实os模块封装了完整的目录创建相关的方法. 创建单级目录 os.mkdir('./path') 创建多级目录 o ...

  7. Java快速创建多级目录

    思路: 1.创建目录文件对象  File file = new File()  2.判断目录是否存在  !file.exists() 3.不存在则创建文件  file.mkdirs() import ...

  8. php使用mkdir创建多级目录入门例子

    来源:http://www.jb51.net/article/49970.htm <?php   //echo "hello world";   //echo "y ...

  9. 【转】php利用mkdir创建多级目录

    先介绍一下 mkdir() 这个函数: mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径: 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访 ...

最新文章

  1. dnscat使用——整体感觉这个工具不完善,失败率很高,传文件时候没有完整性校验,我自己测试时通过域名转发失败,可能是其特征过于明显导致...
  2. shell--变量的替换
  3. Matplot的常见问题
  4. Node.js 应用的内存泄漏问题的检测方法
  5. 笔记 — 动画效果(Css3)
  6. 第1章 程序设计和C语言
  7. python---python实现快速排序
  8. 全功能短视频平台去水印解析页面源码
  9. 自顶向下方法学习笔记
  10. 决策树应用实例③——银行借贷模型
  11. 专升本英语固定词组搭配500个
  12. Win10:电脑共享WIFI
  13. 锂离子电容器_离子电容器:从Mac的App到iOS IPA
  14. Android Studio报错——The device might have stale dexed jars that don‘t match the current version
  15. python查表法是什么_python查表法提取骨骼线经历
  16. 木棍游戏(深搜 模板
  17. Rime默认为英文状态
  18. spring boot mybatis 日志打印配置
  19. SpringBoot从入门到精通教程(二十九)- 微信企业支付集成(五分钟集成)
  20. 华为OD机试 - 自动曝光(C 语言解题)【独家】

热门文章

  1. 用Python快速实现视频的人脸融合
  2. Limit与skip
  3. GIL对多线程的影响
  4. python测试题 - 字典操作
  5. 选择适合你的开源 OLAP 引擎
  6. [深度学习-实践]GAN基于手写体Mnist数据集生成新图片
  7. bootstrapt学习指南_TensorFlow 2.0深度强化学习指南
  8. leetcode —— 979. 在二叉树中分配硬币
  9. 去哪儿-16-detail-banner
  10. 差分隐私学习路线【定期更新】