QDir mkdir с абсолютным путем

У меня проблема с созданием каталога с Qt. Я хотел бы создать каталог в documents'dir, поэтому я делаю такие вещи:

QString path("C:/Users/Me/Documents/MyApp/profiles/");
Qdir dir = QDir::root();
dir.mkdir(path);

Но это не работает! У меня есть тест с разделителями «/» и «\», но в двух случаях они не работают.

Как я могу создать свой каталог?

Спасибо.


person Guillaume    schedule 09.03.2012    source источник


Ответы (3)


Вместо использования dir.mkdir() попробуйте использовать QDir::mkpath;
то есть как dir.mkpath(path);

person Dcow    schedule 09.03.2012

Ты можешь это сделать:

QDir dir(path);
if (!dir.exists()){
  dir.mkdir(".");
}
person yerlilbilgin    schedule 01.07.2013
comment
Предпочтительно dir.mkpath (.), Как указано здесь: stackoverflow.com/a/11517874/4706859 в противном случае, если в нескольких папках есть для создания ваш вызов dir.mkdir () завершится ошибкой. Также обратите внимание, что нет необходимости в проверке существования каталога, если вы действительно не собираетесь что-то делать с его результатом. С другой стороны, может быть полезна проверка успешности dir.mkpath (). - person SR_; 03.11.2017

QDir dir = QDir::root() создает экземпляр QDir, настроенный так, чтобы указывать на root, и копирует этот параметр в dir. Чтобы избежать лишнего копирования и кода, вы можете использовать QDir dir(QDir::root);. В Windows он будет указывать на корень системного диска, обычно C:\.

dir.mkdir(path); попытается создать подкаталог с именем path в текущем настроенном каталоге (корне). Этот метод ожидает одно имя каталога, а не полный путь. Он также возвращает результат bool, который вам следует проверить.

Вероятно, вы захотите позвонить dir.mkpath(path), который попытается создать подкаталог, указанный вместе со всеми необходимыми родительскими каталогами, ведущими к нему. Опять же, вы должны проверить результат, чтобы убедиться, что он успешен.

person Arnold Spence    schedule 10.03.2012