欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > qt QDir详解

qt QDir详解

2024/11/14 13:23:15 来源:https://blog.csdn.net/ckg3824278/article/details/143506790  浏览:    关键词:qt QDir详解
1、概述

QDir是Qt框架中的一个核心类,它提供了对文件系统目录的操作接口。Qt是一个跨平台的应用程序开发框架,广泛用于开发桌面、移动和嵌入式设备上的应用程序。QDir类使得开发者能够方便地在不同操作系统上处理目录和文件,如进行目录遍历、文件查找、创建、删除、移动等操作。

2、重要方法

QDir类提供了多种方法来操作目录和文件,以下是一些重要的方法:

  • 目录操作

    • mkdir() / mkpath():创建单级或多级目录。
    • rmdir():删除空目录。
    • removeRecursively():删除包含文件和子目录的非空目录。
    • rename():重命名或移动目录。
    • exists():检查目录是否存在。
    • isReadable() / isWritable() / isAbsolute():检查目录的各种属性。
  • 文件操作

    • entryList() / entryInfoList():获取目录内文件和子目录列表,可设置过滤条件和排序方式。
    • findFiles() / findChildren():查找特定文件或子目录。
    • remove():删除文件。
    • rename():重命名文件。
  • 路径处理

    • currentPath():获取当前工作目录。
    • setCurrent():设置当前工作目录。
    • absolutePath():返回绝对路径。
    • canonicalPath():返回规范化路径。
    • dirName():获取当前目录名。
    • setPath():设置QDir对象的路径。
    • path():获取QDir对象的路径。
  • 过滤和排序

    • setNameFilters():设置文件名过滤规则。
    • setSorting():设置排序方式。
  • 链接和符号链接

    • isSymLink():检查是否为符号链接。
    • symLinkTarget():获取符号链接的目标路径。
3、重要信号

关于QDir类的重要信号,需要注意的是,QDir本身并不直接发出信号。然而,在Qt框架中,与文件和目录操作相关的类(如QFileSystemWatcher)可以发出信号来监控文件和目录的变化。例如,QFileSystemWatcher可以监控指定目录和文件的状态,当目录或文件发生改变时(如内容变化、重命名、删除等),将触发相应的信号。开发者可以通过信号与槽的机制捕获这些信号并作出反应。

但请注意,由于QDir本身不直接发出信号,因此在此部分中无法列出QDir的特定信号。如果需要监控文件和目录的变化,请考虑使用QFileSystemWatcher等类。

#include <QDir>  
#include <QFileInfo>  
#include <QTextStream>  
#include <QStandardPaths>  
#include <QFile>  
#include <QDebug>  int main(int argc, char *argv[]) {  // 获取并打印当前工作目录  QDir currentDir = QDir::current();  qDebug() << "Current directory: " << currentDir.path();  // 创建多级目录  QString newDirPath = "/path/to/new/directory";  if (QDir().mkpath(newDirPath)) {  qDebug() << "Directory created: " << newDirPath;  } else {  qDebug() << "Failed to create directory!";  }  // 列出指定目录下的所有文件和子目录(不递归)  QDir dir("/path/to/some/directory");  QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);  for (const QString &entry : entries) {  qDebug() << entry;  }  // 按大小排序列出目录下的所有文件,并显示详细信息  QDir dirWithDetails("/path/to/some/directory");  dirWithDetails.setSorting(QDir::Size | QDir::Reversed);  QFileInfoList fileInfoList = dirWithDetails.entryInfoList(QDir::Files);  for (const QFileInfo &info : fileInfoList) {  qDebug() << "Name: " << info.fileName();  qDebug() << "Size: " << info.size();  qDebug() << "IsDir: " << info.isDir();  qDebug() << "Last modified: " << info.lastModified().toString();  qDebug() << "";  }  return 0;  
}

觉得有帮助的话,打赏一下呗。。

           

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com