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

@yalov-비정 적과 충돌하기 때문이다 QDir::mkdir("relative_path"). 두 과부하를 모두 가질 수는 없습니다.
Tomasz Gandor

5
@ JonasG.Drange이 답변은 복잡한 / 경로 / 구조 / with / intermediate / 폴더에 중간 폴더를 생성하지 않습니다. 내 대답은 객관적으로 더 좋습니다. 투표율이 낮은 이유는이 투표 후 2 년 후에 게시 되었기 때문입니다.
Petrucio

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.