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?

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

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(".");

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


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.