Verificando se existe uma pasta (e criando pastas) no Qt, C ++

153

No Qt, como verifico se uma determinada pasta existe no diretório atual?
Se não existir, como crio uma pasta vazia?

Interruptor
fonte

Respostas:

225

Para verificar se existe um diretório chamado "Pasta", use:

QDir("Folder").exists();

Para criar uma nova pasta chamada "MyFolder", use:

QDir().mkdir("MyFolder");
Kyle Lutz
fonte
1
Como esta resposta se compara à resposta de @ Petrucio? Não posso deduzir isso dos documentos.
Jonas G. Drange
1
Por que não é estático? QDir::exists("absolutepath")eQDir::mkdir(""absolutepath")
yalov
@yalov - porque colidiria com não-estático QDir::mkdir("relative_path"). Não é possível ter as duas sobrecargas.
Tomasz Gandor
5
@ JonasG.Drange Esta resposta não cria pastas intermediárias em um complexo / caminho / estrutura / com / intermediário / pastas. Minha resposta é objetivamente melhor; a razão pela qual ele tem menos votos positivos é porque foi publicado dois anos após este.
Petrucio
152

Para verificar se existe e criar se não existir, incluindo intermediários:

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

Quando você usa QDir.mkpath (), ele retorna true se o caminho já existe, por outro lado, QDir.mkdir () retorna false se o caminho já existe. Portanto, dependendo do seu programa, você deve escolher qual se encaixa melhor.

Você pode ver mais sobre a documentação do Qt

Vitor Santos
fonte
0

Se você precisar de uma pasta vazia, poderá fazer um loop até obter uma pasta vazia

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

Nesse caso, você receberá um nome de pasta com um número.

Midhun
fonte
-8

Por que usar mais alguma coisa?

  mkdir(...);
matiasf
fonte