• QDir(目录)


    QDir 类提供对目录结构及其内容的访问,QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统,它也可以用来访问Qt的资源系统。

    Qt使用“/”作为通用目录分隔符,就像URL中的“/”用作路径分隔符一样。如果您始终使用“/”作为目录分隔符,Qt将翻译您的路径以符合底层操作系统。QDir 可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开头(可以选择在 Windows 下以驱动器规范开头)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

    注意:以冒号 () 开头的路径始终被认为是绝对的,因为它们表示QResurce

     构造函数:

     常用函数:

    absoluteFilePath()返回目录中文件的绝对路径名。检查目录中是否确实存在该文件
    absolutePath()返回绝对路径
    addSearchPath()将路径添加到前缀的搜索路径
    canonicalPath()返回规范路径,即没有符号链接或冗余 “.” 或 “..” 元素的路径
    cd()修改目录名
    cdUp()上移一个目录
    clearPath()返回规范化目录分隔符的路径
    count()返回该目录中目录和文件的个数
    current()返回当前目录
    currentPath()返回当前目录的绝对路径
    dirName()返回目录名称
    drives()返回此系统上根目录的列表
    entryInfoList()返回目录中所有文件和目录的QFileInfo对象列表
    entryList()返回目录中所有文件和目录的名称列表

    exist()

    判断目录是否存在
    filePath()返回目录文件中的路径名
    fromNativeSeparators (QString)把路径转换为以'/'作为分割符的路径
    home()返回用户的主目录
    homePath()返回用户主目录的绝对路径

    isEmpty()

    目录是否为空
    isRoot()是否为根目录

    makeAbsolute()

    把路径转化为绝对路径
    mkdir()创建一个子目录
    rmdir()删除空目录
    path()返回路径,这可能包含符号链接
    refresh()刷新
    remove()删除文件
    removeRecursively()删除目录,删除里面的所有内容
    root()返回根目录
    rootPath()返回根目录路径
    temp()返回临时目录

    设置函数:

    setCurrent(QString &path)将应用程序的当前工作目录设置为path
    setFilter()设置筛选器
    setNameFilters(QStringList  nameFilters)设置多个筛选
    setSoring()设置排序顺序

    QDir::Filters(过滤器) 

    QDir::Dirs列出与筛选器匹配的目录
    QDir::AllDirs列出所有目录;即不要将过滤器应用于目录名称
    QDir::Files列出文件
    QDir::Drives列出磁盘驱动器
    QDir::NoSymLinks不要列出符号链接
    QDir::NoDotAndDotDot不要列出特殊条目“.”和“..”
    QDir::NoDot不要列出特殊条目“.”
    QDir::NoDotDot不要列出特殊条目“..”
    QDir::AllEntries列出目录、文件、驱动器和符号链接

    QDir::Readable

    QDir::Writable

    列出应用程序具有读取访问权限的文件

    列出应用程序具有写入访问权限的文件

    需要目录和文件配合使用

    QDir::Executable列出应用程序具有执行访问权限的文件。可执行文件值需要与目录或文件结合使用。
    QDir::Modified仅列出已修改的文件
    QDir::Hidden列出隐藏文件
    QDir::System列出系统文件
    QDir::CaseSensitive筛选器应区分大小写

    QDir::SortFlags(排序方式)

    QDir::Name按名称排序
    QDir::Time按时间(修改时间)排序
    QDir::Size按文件大小排序
    QDir::Type按文件类型(扩展名)排序
    QDir::Unsorted不要排序
    QDir::NoSort默认情况下不排序
    QDir::DirsFirst首先放置目录,然后放置文件
    QDir::DirsLast首先放置文件,然后放置目录
    QDir::Reversed反转排序顺序
    QDir::IgnoreCase排序不区分大小写
    QDir::LocaleAware使用当前区域设置对项目进行适当排序

    目录的原样: 

    目录属性:

    1. QDir dir("F:/text2");
    2. qDebug()<<"目录的绝对路径"<<dir.absolutePath();
    3. qDebug()<<"目录的规范路径"<<dir.canonicalPath();
    4. qDebug()<<"目录的文件和目录个数"<<dir.count();
    5. qDebug()<<"当前目录"<<dir.current();
    6. qDebug()<<"当前目录路径"<<dir.currentPath();
    7. qDebug()<<"返回主目录"<<dir.home();
    8. qDebug()<<"返回主目录路径"<<dir.homePath();
    9. qDebug()<<"修改目录名"<<dir.cd("text222");
    10. qDebug()<<"上移一个目录"<<dir.cdUp();
    11. qDebug()<<"目录的当前的绝对路径"<<dir.absolutePath();

    获取整个目录内容:

    1. QDir dir("F:/text2");
    2. QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    3. listwidget->setFixedSize(200,800);//设置大小
    4. QStringList slist=dir.entryList();//获取目录里的内容
    5. listwidget->addItems(slist);//添加目录里面的内容

    使用过滤器:

    entryList函数:

    使用函数: 

    • 使用dir.entryList()

    • 使用setFilter() 

    1.仅过滤掉隐藏文件

    只过滤隐藏文件的话,需要使用dir.entryList(dir.filter()|QDir::NoDotAndDotDot);

    使用 entryList()

    1. 注意:只过滤隐藏文件 不可以直接使用
    2. QStringList slist=dir.entryList(QDir::NoDotAndDotDot);//错误
    3. 需要使用
    4. QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);//正确

    使用 setFilter()

    1. //dir.setFilter(QDir::NoDotAndDotDot);//错误
    2. dir.setFilter(dir.filter()|QDir::NoDotAndDotDot);//正确
    3. QStringList slist=dir.entryList();

    2.设置多个过滤条件

    设置多个条件的话就可以不使用dir.filter()|QDir::NoDotAndDotDot

    获取目录中的文件夹:

    使用 entryList()

        QStringList slist=dir.entryList(QDir::NoDotAndDotDot|QDir::Dirs);

     使用 setFilter()

    1. dir.setFilter(QDir::NoDotAndDotDot|QDir::Dirs);
    2. QStringList slist=dir.entryList();

     

     获取目录中的文件:

    使用 entryList()

        QStringList slist=dir.entryList(QDir::NoDotAndDotDot|QDir::Files);

    使用 setFilter() 

    1. dir.setFilter(QDir::NoDotAndDotDot|QDir::Files);
    2. QStringList slist=dir.entryList();

    设置多个筛选

    使用:setNameFilters(QStringList  nameFilters)可以细致的筛选文件,筛选多个文件后缀名

    1. QDir dir("F:/text2");
    2. QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    3. listwidget->setFixedSize(200,800);//设置大小
    4. QStringList filterlist;
    5. filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
    6. dir.setNameFilters(filterlist);//设置筛选
    7. QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);
    8. listwidget->addItems(slist);//添加目录里面的文件

    两个筛选一起使用:

    1. QDir dir("F:/text2");
    2. QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    3. listwidget->setFixedSize(200,800);//设置大小
    4. QStringList filterlist;
    5. filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
    6. QStringList slist=dir.entryList(filterlist,dir.filter()|QDir::NoDotAndDotDot);
    7. listwidget->addItems(slist);//添加目录里面的文件

     使用排序器:

    QDir::SortFlagssort= NoSort

    • 使用entryList()进行设置
    • 使用setSorting()进行设置

    按照大小进行排序:

    entryList()进行设置

        QStringList slist=dir.entryList(dir.filter(),QDir::Size);

    setSorting()进行设置 

    1. dir.setSorting(QDir::Size);
    2. QStringList slist=dir.entryList();

     使用:下面的函数可以把以上三个功能一起使用

    entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

    也可以直接获得文件信息列表:

    entryInfoList(const QStringList &nameFilters, QDir::Filtersfilters= NoFilter, QDir::SortFlagssort= NoSort) const

    entryInfoList(QDir::Filtersfilters= NoFilter, QDir::SortFlagssort= NoSort) const

  • 相关阅读:
    main.jsError: error:0308010C:digital envelope routines::unsupported
    linux环境QT做静态库,QT静态库的创建与使用
    java面向对象----封装 && 构造器
    springBoot框架简介入门教程(快速学习版)
    Vue组件化开发-插槽的使用详解
    如何写新闻软文宣传考核稿,媒体发布后效果作用是什么
    专访句子互动CMO张佳:私域运营是一种更高效的用户触达渠道
    Qt入门(七)——TCP传输协议(利用多线程实现多个客户机与服务器连接)
    插入排序(Insertion Sort)
    CISP-PTS学习笔记-XSS
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/128083744