在Qt,C ++中检查文件夹是否存在(并创建文件夹)


153

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

Answers:


225

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

QDir("Folder").exists();

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

QDir().mkdir("MyFolder");

1
这个答案与@Petrucio的答案相比如何?我无法从文档中推断出这一点。
Jonas G. Drange '16

1
为什么它不是静态的?QDir::exists("absolutepath")QDir::mkdir(""absolutepath")
yalov

@yalov-因为它将与非静态碰撞QDir::mkdir("relative_path")。不可能同时具有两个重载。
Tomasz Gandor

5
@ JonasG.Drange此答案不会在复杂/路径/结构/带有/中间/文件夹中创建中间文件夹。我的回答客观上更好。它的投票较少的原因是因为它是在此版本发布两年后发布的。
Petrucio '17

152

要检查它是否存在并创建它是否不存在,包括中介:

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

12

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

您可以在Qt文档中看到更多信息


0

如果您需要一个空文件夹,则可以循环播放直到获得一个空文件夹

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

在这种情况下,您将获得一个带有数字的文件夹名称。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.