精华内容
下载资源
问答
  • QDir类cleanPath函数用法

    2021-09-19 17:55:13
    for (auto& t : ls) { QString k = QDir::cleanPath(t); qDebug() ; } 输出如下: 而/../a/c其实就是/a/c, Qt官方帮助手册中提到如下: Returns path with directory separators normalized (that is, ...

    通过规则处理让源路径成为最短等价路径

    处理规则如下

    1.使用单斜线取代多斜线
    2.取消每个包含.名称的路径
    3.取消内部包含..的路径
    4.取消/..根路径的元素,使用/替换

    这个过程是循环执行的,直到路径符合所有规则

    示例

    QStringList ls;
    	ls << "a/c" << "a//c" << "a/c/." << "a/c/b/.." << "/../a/c" << "/../a/b/../././/c" << "";
    	for (auto& t : ls)
    	{
    	  QString k =	QDir::cleanPath(t);
    	  qDebug() << k << "\r\n";
    	}

    输出如下:


     

     而/../a/c其实就是/a/c, Qt官方帮助手册中提到如下:

    Returns path with directory separators normalized (that is, platform-native separators converted to "/") and redundant ones removed, and "."s and ".."s resolved (as far as possible).

    Symbolic links are kept. This function does not return the canonical path, but rather the simplest version of the input. For example, "./local" becomes "local", "local/../bin" becomes "bin" and "/local/usr/../bin" becomes "/local/bin".

    红色的表示:在不影响正确的情况,在返回的路径中,尽量保留  . ..

    这也就是输出/../a/c而不是/a/c的原因。

     

    展开全文
  • QT QDir

    2021-07-10 15:18:09
    QDir类提供了对目录结构及其内容的访问。 QDir用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它也可以用来访问Qt的资源系统。 Qt使用"/"作为通用的目录分隔符,就像在url中使用"/"作为路径分隔...

    QDir类提供了对目录结构及其内容的访问。

    QDir用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它也可以用来访问Qt的资源系统。

    Qt使用"/"作为通用的目录分隔符,就像在url中使用"/"作为路径分隔符一样。如果您总是使用“/”作为目录分隔符,Qt将转换您的路径以符合底层操作系统。

    QDir可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开始(在Windows下,可选前面是驱动器规范)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

    绝对路径示例:

    QDir("/home/user/Documents")
    QDir("C:/Documents and Settings")


    在Windows上,上面的第二个示例用于访问文件时将被转换为C:\Documents and Settings。

    相对路径示例:

    QDir("images/landscape.png")


    您可以使用isRelative()或isAbsolute()函数来检查QDir是使用相对文件路径还是绝对文件路径。调用makeAbsolute()将相对QDir转换为绝对QDir。

    导航和目录操作

    可以使用path()函数获取目录的路径,并使用setPath()函数设置新的路径。一个目录的绝对路径可以通过调用absolutePath()来找到。

    目录的名称可以使用dirName()函数找到。这通常返回绝对路径中指定目录位置的最后一个元素。然而,如果QDir表示当前目录,它也可以返回"."。

    QDir("Documents/Letters/Applications").dirName() // "Applications"
    QDir().dirName()                                 // "."


    目录的路径也可以用cd()和cdUp()函数更改,它们的操作方式类似于熟悉的shell命令。当使用现有目录的名称调用cd()时,QDir对象更改目录,以代替它表示该目录。cdUp()函数改变QDir对象的目录,使其引用其父目录;即cd("..")相当于cdUp()。

    可以使用mkdir()创建目录,使用rename()重命名目录,使用rmdir()删除目录。

    您可以使用exists()来测试给定名称的目录是否存在,并且可以使用isReadable()、isAbsolute()、isRelative()和isRoot()来测试目录的属性。

    refresh()函数从磁盘重新读取目录数据。

    文件和目录内容

    目录包含许多表示文件、目录和符号链接的条目。目录中的条目数由count()返回。一个目录中所有条目的名字的字符串列表可以通过entryList()获得。如果您需要关于每个条目的信息,请使用entryInfoList()来获取QFileInfo对象列表。

    目录中的文件和目录的路径可以使用filePath()和absoluteFilePath()构造。函数的作用是:返回指定文件或目录相对于QDir对象的路径;absoluteFilePath()返回指定文件或目录的绝对路径。这两个函数都不检查文件或目录是否存在;它们只建造路径。

    QDir directory("Documents/Letters");
    QString path = directory.filePath("contents.txt");
    QString absolutePath = directory.absoluteFilePath("contents.txt");


    可以使用remove()函数来删除文件。目录不能像文件一样被删除;使用rmdir()来删除它们。

    通过对QDir对象应用过滤器,可以减少entryList()和entryInfoList()返回的条目的数量。您可以应用名称筛选器来指定带有通配符的模式,文件名需要匹配,属性筛选器可以选择条目的属性,并可以区分文件和目录,以及排序顺序。

    名称过滤器是传递给setNameFilters()的字符串列表。属性过滤器由按位或组合的过滤器组成,在调用setFilter()时指定这些过滤器。排序顺序是使用setSorting()和SortFlags的位OR组合来指定的。

    您可以使用match()函数来测试文件名是否与过滤器匹配。

    在调用entryList()和entryInfoList()时也可以指定过滤器和排序顺序标志,以覆盖之前定义的行为。

    当前目录和其他特殊路径

    通过许多返回QDir对象的静态函数提供了对一些常见目录的访问。也有相应的返回字符串的函数:

    QDirQStringReturn Value
    current()currentPath()The application's working directory
    home()homePath()The user's home directory
    root()rootPath()The root directory
    temp()tempPath()The system's temporary directory

    静态函数setCurrent()也可以用来设置应用程序的工作目录。

    如果你想找到包含应用程序可执行文件的目录,请参见QCoreApplication::applicationDirPath()。

    静态函数提供了包含文件系统的每个设备的根目录列表。在Unix系统上,这将返回一个包含单个根目录"/"的列表;在Windows上,列表通常包含C:/,可能还有其他的驱动器号,如D:/,这取决于用户的系统配置。

    路径操作和字符串

    包含“。”元素(在路径的该点引用当前目录)、“..”元素(引用父目录)和符号链接的路径可以使用canonicalPath()函数简化为规范形式。

    路径也可以通过使用cleanPath()来删除冗余的"/"和".."元素来简化。

    有时需要能够以用户平台的本机表示形式显示路径。静态toNativeSeparators()函数返回指定路径的副本,其中每个目录分隔符都被底层操作系统的适当分隔符替换。

    例子

    检查目录是否存在:

    QDir dir("example");
    if (!dir.exists())
        qWarning("Cannot find the example directory");

    (我们也可以使用静态便利函数QFile::exists())

    遍历目录并读取文件:

    QDir dir = QDir::root();                 // "/"
    if (!dir.cd("tmp")) {                    // "/tmp"
        qWarning("Cannot find the \"/tmp\" directory");
    } else {
        QFile file(dir.filePath("ex1.txt")); // "/tmp/ex1.txt"
        if (!file.open(QIODevice::ReadWrite))
            qWarning("Cannot create the file %s", file.name());
    }

    列出当前目录中所有文件(不包括符号链接)的程序,按大小排序,最小的优先:

    #include <QDir>
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication app(argc, argv);
        QDir dir;
        dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
        dir.setSorting(QDir::Size | QDir::Reversed);
    
        QFileInfoList list = dir.entryInfoList();
        std::cout << "     Bytes Filename" << std::endl;
        for (int i = 0; i < list.size(); ++i) {
            QFileInfo fileInfo = list.at(i);
            std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                    .arg(fileInfo.fileName()));
            std::cout << std::endl;
        }
        return 0;
    }

    参见QFileInfo, QFile, QFileDialog, QCoreApplication::applicationDirPath()和Find Files Example。

    展开全文
  • 核心点是函数QDir::setFilter()的参数设置QDir::Dirs,如下所示: dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); 示例: sComFilePath是指定的目录路径,现递归打开该目录并将其中以.acf结尾的全部文件写入...

    核心点是函数QDir::setFilter()的参数设置QDir::Dirs,如下所示:

    dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);

    示例:
    sComFilePath是指定的目录路径,现递归打开该目录并将其中以.acf结尾的全部文件写入到"game_acf.txt"文本中。

    QDir dir(sComFilePath);
            if (!dir.exists()) {
                return -1;
            }
    
          //取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)
            dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
    
            //文件夹优先
            dir.setSorting(QDir::DirsFirst);
    
            //转化成一个list
            QFileInfoList list = dir.entryInfoList();
            if(list.size()< 1 ) {
                return -1;
            }
    
        int i=0;
        static int k=0;
        //递归算法的核心部分
        do{
            QFileInfo fileInfo = list.at(i);
            QString tt = fileInfo.fileName();
    
            //如果是文件夹,递归
            bool bisDir = fileInfo.isDir();
            if(bisDir) {
                Findexe(fileInfo.filePath());
            }
            else{
                bool isacf = fileInfo.fileName().endsWith(".acf");
                if (isacf == true) {
                    QString afcfile = fileInfo.filePath();
    
                    QFile file( "./game_acf.txt" );
                    if ( file.open( QIODevice::ReadWrite | QIODevice::Append ))
                    {
                        if(k>0)
                        {
                            file.write("\n");
                        }
                       k++;
                       file.write(afcfile.toUtf8());
                       file.close();
                    }
              }
            }//end else
            i++;
        } while(i < list.size());
        return 1;
    
    展开全文
  • 核心点是函数QDir::setFilter()的参数设置QDir::Dirs,如下所示: dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);   1.1下面的是总结的函数: QStringList Widget::getDirName(QString pathsDir) ...

    本文主要总结只获取指定目录下的文件夹的名称,过滤条其它类型文件。

    核心点是函数QDir::setFilter()的参数设置QDir::Dirs,如下所示:

    dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);

     

    1.1下面的是总结的函数:

    QStringList Widget::getDirName(QString pathsDir)
    {
        /*获取文件夹下的文件名称*/
        QDir dir(pathsDir);
        if (!dir.exists())
        {
            return QStringList("");
        }
        dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
        QStringList allImageNameList = dir.entryList();
        if (allImageNameList.count() <= 0)
        {
            return QStringList("");
        }
        return allImageNameList;
    }

     

    1.2调用该函数,输出文件夹的名称如下图所示:

     

     

    参考内容:

    https://www.xuebuyuan.com/994757.html

    展开全文
  • QDir

    2020-02-13 14:56:36
    QDir Class TheQDirclass provides access to directory structures and their contents.More... Header: #include <QDir> qmake: QT += core List of all members, including inherited membe...
  • QDir 5.0.2

    千次阅读 2014-12-26 13:20:34
    创建目录操作对象 定义时不初始化 默认对象为"." 即应用程序...QDir(const QDir &) QDir(const QString &) QDir(const QString &, const QString &, SortFlags, Filters) ~QDir() m_dir.setPath("abc");//对d重新赋值
  • 这个事系统的隐藏文件Thumbs.db。 EntryInfoList()返回的只有. 和 .. 在windows下就删除不了这个文件夹了
  • QDir 类 -属性详解

    2021-06-29 09:45:49
    那么本文讲解目录信息类 QDir,用于获取有关目录的信息 函数详解 初始化 构造函数 QDir(const QDir &dir) QDir(const QString &path = QString()) QDir(const QString &path, const QString &...
  • Qt-QDir

    千次阅读 2016-09-07 16:52:46
    QDir提供了目录及目录下内容的接口,可以用来操作文件路径名、获取相关文件和路径的信息、操作下面的文件系统以及Qt的资源文件。QDir能指向相对路径或绝对路径: 绝对路径:QDir("/home/user/Documents") //begin ...
  • QDir 翻译

    千次阅读 2013-12-16 23:43:46
    QString QDir::canonicalPath() const Returns the canonical path, i.e. a path without symbolic links or redundant "." or ".." elements. On systems that do not have symbolic links this function wil
  • Qt之QDir

    2020-04-11 17:50:41
    利用QDir,我们可以获取目录结构和它们的内容。 QDir被用来操作路径,并获取和该路径有关的信息。QDir也可以被用来处理Qt的资源系统。 Qt使用"/“作为全局目录分隔符。如果你总是用”/"作为目录分隔符来表示一个路径...
  • Qt:QDir

    2021-04-13 10:52:47
    QDir类提供对目录结构及其内容的访问 头文件: #include<QDir> cmake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) qmake: QT += core 详细说明 ...
  • QDir的使用

    2020-02-26 20:01:36
    关于QDir 通常我们使用QFileDialog来选择一个文件路径; 但是当我们需要打开指定文件时(如:选择一个文件路径,获取到文件中的内容)时,则需要使用QDir 例: QDir dir(path); //打开文件 QStringList fileNameList...
  • QDir的用法

    千次阅读 2014-05-07 08:46:40
    QDir提供了对目录结构和它们的内容的访问方式。QDir用来操作路径名,访问关于路径和文件的信息,操作基础的文件系统,还可以用来访问Qt的资源系统。  Qt使用"/"来作为通用的目录分隔符,这一点和在URLs中的路径...
  • QDir类及其用法总结

    2021-04-16 14:20:36
    简介 QDir类提供了访问系统目录结构及其内容的...QDir类对象所关联的目录路径可以使用path()函数获得,可以使用setPath()方法来设置新的路径; 可以使用方法absolutePath()来获得目录的绝对路径。 目录名可以使用dirNa
  • 函数 QDir::QDir(const QString &...QDir类的构造函数,参数path是一个路径,path默认为空,为空时将被设为当前的工作路径。 判断目录下文件夹或文件是否存在,name可为文件夹名或文件名(包含后缀)。 ...
  • QT目录遍历(QDir

    千次阅读 2019-05-21 18:44:03
    QT目录遍历(QDirQDir类提供了访问目录结构和他们的内容的方法。 QDir类提供了访问目录结构和它们的内容的与平台无关的方式。 QDir用来操作路径名称、关于路径和文件的访问信息和操作底层文件系统。 QDir使用...
  • 0007:Qt常用类 - QDir

    2019-05-04 23:41:46
    Qt常用类 - QDir 1 开发环境 在介绍内容之前,先说明一下开发环境,如下图: Qt版本:Qt5.3.2; Qt开发工具:Qt Creater 3.2.1; Qt构建工具:Desktop Qt 5.3 MinGW 32bit; Qt开发平台:Windows 7 64bit。 2 QDir ...
  • QDir中mkdir和mkpath的区别

    千次阅读 2019-04-25 10:38:33
    QDir中mkdir和mkpath的区别! mkdir: 原型:bool QDir::mkdir(const QString &dirName) const Creates a sub-directory called dirName. Returns true on success; otherwise returns false. If the directory ...
  • 在开发过程中,需要用到文件的一些处理,例如文件夹的拷贝,文件夹删除或创建,文件的拷贝、删除等操作。Qt已经包含了这些操作,...path.exists("c:/test")) { // 使用QDir成员函数exists()来判断文件夹是否存在 pat
  • 一、QFileInfo的简单用法 参考链接:... QFileInfo的几个构造函数: QFileInfo( ) QFileInfo( const QString &file) QFileInfo( const QFile &file) QFileInfo...
  • 常用函数 作用 bool isRelative() 判断路径是否是绝对路径 bool isAbsolute() 判断路径是否是相对路径 QString dirName() 返回目录的名字,如果QDir关联的是当前工作目录,则返回"." QString absolutePath...
  • Qt QDir用法及实战案例

    2021-09-02 17:09:39
    QDir简介 QDir类用来操作路径名,获取关于目录路径及文件的相关信息 实战案例 这次遇到了Qt项目,其中有一项是访问指定的目录,并获取特定的文件格式,将获取到的文件名打印到显示屏上,并可以去操作这些文件。 1....
  • Qt学习笔记#7:QDir

    千次阅读 2016-09-20 10:26:43
    前言 ... 关于QDir类的具体用法,官方文档讲得非常清楚,这里就不详细介绍,本文主要记录作者觉得值得重点介绍的函数方法。 获取当前目录返回当前程序所在的目录。[static] QString QDir::currentPa
  • Qt创建文件夹 QDir

    千次阅读 2019-01-19 09:29:45
    首先创建一个lineEdit和pushButton成员变量和一个createFolderSlot()槽函数 private: QLineEdit *lineEdit; QPushButton *pushButton; private slots: void createFolderSlot(); 构造函数中: lineEdit = ...
  • qt QIODevice和QDir

    2020-07-04 22:35:20
    在写入时,将结束符转换成本地格式,win32平台是\r\n QIDevice::Unbuffered 绕过设备所有的缓冲区 Qdir 中常用目录的获取函数 返回类型QDir 返回类型 为QString 返回值 current currentPath() 应用程序的工作目录 ...
  • QT的QDir类的使用

    2020-12-08 10:36:57
    QDir类提供对目录结构及其内容的访问。 QDir用于操纵路径名,访问有关路径和文件的信息以及操纵底层文件系统。 它也可以用来访问Qt的资源系统。 Qt使用“ /”作为通用目录分隔符,就像使用“ /”作为URL中的路径分隔...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,887
精华内容 1,154
关键字:

qdir函数