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使用当前区域设置对项目进行适当排序

目录的原样: 

目录属性:

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

获取整个目录内容:

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

使用过滤器:

entryList函数:

使用函数: 

  • 使用dir.entryList()

  • 使用setFilter() 

1.仅过滤掉隐藏文件

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

使用 entryList()

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

使用 setFilter()

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

2.设置多个过滤条件

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

获取目录中的文件夹:

使用 entryList()

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

 使用 setFilter()

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

 

 获取目录中的文件:

使用 entryList()

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

使用 setFilter() 

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

设置多个筛选

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

    QDir dir("F:/text2");
    QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    listwidget->setFixedSize(200,800);//设置大小

    QStringList filterlist;
    filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
    dir.setNameFilters(filterlist);//设置筛选

    QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);
    listwidget->addItems(slist);//添加目录里面的文件

两个筛选一起使用:

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

 使用排序器:

QDir::SortFlagssort= NoSort

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

按照大小进行排序:

entryList()进行设置

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

setSorting()进行设置 

    dir.setSorting(QDir::Size);
    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值