Я хочу, чтобы мое приложение записало файл в указанное место и, следовательно, при необходимости создало соответствующий каталог.
Операция создания каталога не является для меня проблемой, но мне нужен путь каталога.
Я мог бы извлечь, если из пути к файлу, но, возможно, есть быстрый / краткий / удобный способ сделать полную операцию?
Я повторяю, я не ищу основную функцию makedir, а ту, которая будет принимать имя файла возможно несуществующего файла или простую функцию qt для извлечения строки пути dir из строки пути файла, поэтому написать функцию для такой основной задачи.
Используйте следующий код:
const QString filePath = "C:/foo/bar/file.ini";
QDir().mkpath(QFileInfo(filePath).absolutePath());
Этот код автоматически создает путь к указанному (несуществующему) файлу.
QFileInfo::absolutePath()
извлекает абсолютный путь к указанному файлу.
QDir::mkpath()
создает ранее извлеченный путь.
Если у вас есть полный путь к файлу и вам нужно извлечь путь к папке, вы можете сделать это следующим образом:
QFile file(full_path_to_the_file);
QFileInfo info(file);
QString directoryPath = info.absolutePath();
//now you can check if the dir exists:
if(QDir(directoryPath).exists())
//do stuff
В зависимости от того, что именно так вам нужно, вы можете использовать QFileInfo::canonicalPath()
вместо absolutePath
Кроме того, вы также можете использовать QFileInfo::absoluteDir
:
QFile file(full_path_to_the_file);
QFileInfo info(file);
if(info.absoluteDir().exists())
//do stuff