Qt | 关于目录操作的使用 QDir

702 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

前言:

QDir类是Qt中用来访问目录结构及其内容的类,它既可以操作路径名、访问路径和文件相关信息、操作底层的文件系统,还可以访问Qt的资源系统。Qt中使用“/”作为通用的目录分隔符合URLs的目录分隔符。

QDir既可以使用相对路径也可以使用绝对路径来指向一个文件。

QDir的相关操作函数:

  • isRelative(); // 判断QDir是否使用相对路径
  • isAbsolute(); // 判断QDir是否使用绝对路径
  • makeAbsolute(); // 将一个相对路径转换为绝对路径
  • path(); // 获取目录的路径
  • setPath(); // 给QDir设置一个新路径
  • absolutePath(); // 获取目录的绝对路径
  • dirName(); // 获取目录名,通常返回绝对路径中的最后一个元素;如果QDir代表当前目录,会返回“.”
  • cd(); // 进入到指定目录
  • cdUp(); // 进入到父目录cdUp() 等效于 cd("..")
  • mkdir(); // 创建一个目录
  • rename(); // 重命名
  • rmdir(); // 删除目录(删除文件用remove())
  • exists(); // 测试指定目录是否存在
  • isReadable(); // 测试目录的属性,是否可读
  • isRoot(); // 测试目录的属性,是否是根目录
  • refresh(); // 重新读取目录的数据
  • count(); // 返回目录中的所有条目数
  • entryList(); // 获取目录中条目的名称列表
  • entryInfoList(); // 获取一个QFileInfo对象的列表

名称过滤器:

通过名称过滤器(name filters)使用通配符(wildcards)指定一个模式进行文件名的匹配,一个属性过滤器可以选取条目的属性并且可以区分文件和目录,还可以使用setSorting()函数设定排序顺序。

名称过滤器就是一个字符串列表,可以使用setNameFileters() 函数来设置过滤器。

例:

QStringList filters;
filters << "*.cpp" << "*.h" << "*.txt";
dir.setNameFilters(filters);

常用目录的获取函数:

  • current(); //返回QDir,应用程序的工作目录
  • currentPath(); //返回QString,应用程序的工作目录
  • home(); //返回QDir,用户的home目录
  • homePath(); //返回QString,用户的home目录
  • root(); //返回QDir,root根目录
  • rootPath(); //返回QString,root根目录
  • temp(); //返回QDir,系统存放临时文件的目录
  • tempPath(); //返回QString,系统存放临时文件的目录

使用setCurrent() 函数可以设置应用程序的工作目录;使用QCoreApplication::applicationDirPath() 函数可以查找包含应用程序可执行文件的目录