Qt、C ++でフォルダーが存在するかどうかの確認(およびフォルダーの作成)


153

Qtでは、特定のフォルダーが現在のディレクトリに存在するかどうかを確認するにはどうすればよいですか?
存在しない場合、空のフォルダを作成するにはどうすればよいですか?

回答:


225

「Folder」という名前のディレクトリが存在するかどうかを確認するには、次のコマンドを使用します。

QDir("Folder").exists();

「MyFolder」という名前の新しいフォルダを作成するには、次のコマンドを使用します。

QDir().mkdir("MyFolder");

1
この回答は@Petrucioの回答とどのように比較されますか?ドキュメントからこれを推測することはできません。
Jonas G. Drange

1
なぜ静的ではないのですか?QDir::exists("absolutepath")およびQDir::mkdir(""absolutepath")
yalov 2017年

@yalov-非静的と衝突するためQDir::mkdir("relative_path")。両方のオーバーロードを持つことはできません。
Tomasz Gandor 2017年

5
@ JonasG.Drangeこの回答は、複合/パス/構造/ with / intermediate /フォルダーに中間フォルダーを作成しません。私の答えは客観的に優れています。賛成票が少ないのは、この投票から2年後に投稿されたためです。
ペトルシオ2017年

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);

この場合、番号が付いたフォルダ名が表示されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.