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

177

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

(注:原文中的“folder”翻译为“文件夹”更准确。)
4个回答

248

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

QDir("Folder").exists();

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

QDir().mkdir("MyFolder");

1
这个答案与@Petrucio的答案相比如何? 我无法从文档中推断出来。 - Jonas G. Drange
1
为什么它不是静态的?QDir::exists("绝对路径")QDir::mkdir("绝对路径") - yalov
@yalov - 这是因为它会与非静态的 QDir::mkdir("relative_path") 冲突。无法同时拥有两个重载。 - Tomasz Gandor
9
@JonasG.Drange 这个答案不会在复杂的路径结构中创建中间文件夹。我的答案更加客观好评;之所以没有得到更多赞是因为它是在这篇答案发布两年后才发布的。 - Petrucio

195

如果要同时检查是否存在并在不存在时创建,包括中间目录的话:

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

为什么在 dir.mkpath(".") 中要传递 "." 参数? - Punitto Moe
1
因为“.”是当前目录,我们已将其设置为我们要创建的目录。 - Petrucio

12
当你使用QDir.mkpath()时,如果路径已经存在,它会返回true,而QDir.mkdir()则会返回false。因此,根据你的程序,你必须选择哪个更适合。你可以在Qt文档中了解更多信息。

-14

为什么要使用其他东西呢?

  mkdir(...);

3
因为在Qt中不能像那样使用它。 - Patapoom
@Patapoom 他可能指的是Linux函数。 - Youda008
因为它不具备跨平台性。 - Youda008

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接