【问题标题】:Checking if a folder exists (and creating folders) in Qt, C++在 Qt、C++ 中检查文件夹是否存在(并创建文件夹)
【发布时间】:2011-01-15 13:20:29
【问题描述】:

在 Qt 中,如何检查给定文件夹是否存在于当前目录中?
如果它不存在,我该如何创建一个空文件夹?

【问题讨论】:

    标签: c++ qt filesystems


    【解决方案1】:

    要检查名为“文件夹”的目录是否存在,请使用:

    QDir("Folder").exists();
    

    要创建一个名为“MyFolder”的新文件夹,请使用:

    QDir().mkdir("MyFolder");
    

    【讨论】:

    • 这个答案与@Petrucio 的答案相比如何?我无法从文档中推断出这一点。
    • 为什么它不是静态的? QDir::exists("absolutepath")QDir::mkdir(""absolutepath")
    • @yalov - 因为它会与非静态QDir::mkdir("relative_path") 发生冲突。不可能同时拥有两个重载。
    • @JonasG.Drange 此答案不会在复杂/路径/结构/with/intermediate/folders 中创建中间文件夹。我的回答客观上更好;它的点赞数较少的原因是它是在这篇文章发布两年后发布的。
    【解决方案2】:

    为什么要使用其他东西?

      mkdir(...);
    

    【讨论】:

    • 因为在Qt中不能这样使用。
    【解决方案3】:

    检查它是否存在,如果不存在则创建,包括中间人:

    QDir dir("path/to/dir");
    if (!dir.exists())
        dir.mkpath(".");
    

    【讨论】:

    • 工作就像一个魅力!
    【解决方案4】:

    当您使用 QDir.mkpath() 时,如果路径已经存在,则返回 true;另一方面,如果路径已经存在,QDir.mkdir() 则返回 false。因此,根据您的程序,您必须选择更适合的程序。

    你可以在Qt Documentation看到更多

    【讨论】:

      【解决方案5】:

      如果你需要一个空文件夹,你可以循环直到你得到一个空文件夹

          QString folder= QString ("%1").arg(QDateTime::currentMSecsSinceEpoch());
          while(QDir(folder).exists())
          {
               folder= QString ("%1").arg(QDateTime::currentMSecsSinceEpoch());
          }
          QDir().mkdir(folder);
      

      这种情况下你会得到一个带有数字的文件夹名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-10
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 2012-02-23
        • 2022-11-06
        相关资源
        最近更新 更多