Все мои программы хранят настройки в папке ~/.qsoft.
Пишу функцию, поверяющую есть ли папка и файл конфигурации. Если их нет, то она создает их:
Объявление полей класса:
QDir dirconf;
QFile filedata;
Описание метода класса:
dirconf.setPath( QString("%1/.qsoft").arg(getenv("HOME")) );
filedata.setFileName( QString("%1/qnote.dat").arg(dirconf.path()) );
if (!dirconf.exists()){
printf("\n%s: directory not exist.\nBegin creating directory...\n", dirconf.path().toAscii().constData());
if ( !dirconf.mkpath( dirconf.dirName() ) ){
printf("Error: directory not created.\n");
exit(1);
} else
printf("OK: directory created.\n");
}
if (!filedata.exists()){
printf("\n%s: file not exist.\nBegin creating file...\n", filedata.fileName().toAscii().constData());
if ( !filedata.open(QIODevice::WriteOnly) ){
printf("Error: file not created.\n");
exit(1);
} else {
filedata.close();
printf("OK: file created.\n");
}
}
Сам класс приводить не буду. В результате создается папка ~/.qsoft, ~/.qsoft/.qsoft и файл ~/.qsoft/qnote.dat
Я не понимаю, почему создается ~/.qsoft/.qsoft.
В документации сказано что mkPath создаст папку, путь к которой указан в параметре и все родительские директории, если они отсутствуют.
При запуске программы в консоли появляется вот что:
/home/were/.qsoft: directory not exist.
Begin creating directory...
OK: directory created.
/home/were/.qsoft/qnote.dat: file not exist.
Begin creating file...
OK: file created.
То есть программа пытается создать /home/were/.qsoft, но почему-то она создает /home/were/.qsoft/.qsoft, а /home/were/.qsoft создается как родительская.
Кто-нибудь, подскажите как сделать грамотно. Хочу правильный и красивый код... Да вот что-то не выходит.