QT创建多级目录

本文介绍了一个简单的递归函数,用于在文件系统中创建多级目录结构。该方法首先检查目标路径是否存在,若不存在则递归地创建父目录及子目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码简单,使用递归创建多级目录

/**
 * @brief mkMutiDir  创建多级目录
 * @param path	     未创建的目录
 * @return 	     返回已创建的目录
 */
QString mkMutiDir(const QString path){
    QDir dir(path);
    if ( dir.exists(path)){
        return path;
    }
    QString parentDir = mkMutiDir(path.mid(0,path.lastIndexOf('/')));
    QString dirname = path.mid(path.lastIndexOf('/') + 1);
    QDir parentPath(parentDir);
    if ( !dirname.isEmpty() )
        parentPath.mkpath(dirname);
    return parentDir + "/" + dirname;
}


 QString path = "d:/download/1234/abc/11/22/";
    qDebug() << mkMutiDir(path);

在使用 Qt 时,如果遇到“无法创建目录”的问题,通常是由于构建配置或权限设置不当导致的。以下是一些常见的解决方法: 1. **检查构建目录路径**:Qt Creator 在创建项目时会自动生成构建目录,默认路径格式为 `../build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}`。确保该路径是有效的,并且没有包含非法字符或过长的路径名[^2]。 2. **重置默认构建目录**:可以尝试通过菜单栏中的“工具” -> “构建和运行” -> “概要”来重置默认构建目录。点击“Default build directory”旁边的“Reset”按钮,然后删除项目目录下的 `.pro.user` 文件,最后重新构建项目。 3. **手动指定构建目录**:在项目管理界面中,选择当前项目,然后在“构建”选项卡下找到“构建目录”,将其更改为一个已知有效且具有写入权限的路径。 4. **检查文件系统权限**:确保你有权限在目标位置创建和写入文件。如果你没有足够的权限,可能需要以管理员身份运行 Qt Creator 或者更改目标目录的权限设置。 5. **清理缓存并重新启动 Qt Creator**:有时候旧的缓存数据可能导致问题。关闭 Qt Creator,然后删除项目的构建目录以及 `.qmake.stash` 和其他临时生成的文件,再重新打开项目进行构建。 6. **更新 Qt 和相关组件**:确保你的 Qt 版本是最新的,或者至少是稳定的版本。有时,这类问题可能是由已知的 bug 引起的,而这些 bug 可能在新版本中已经被修复了。 7. **添加外部库路径**:如果问题是由于找不到特定的库(如 GMock)引起的,则应在 `.pro` 文件中正确添加 `INCLUDEPATH` 和 `LIBS` 选项来指定头文件和库文件的位置[^1]。 8. **处理共享库依赖**:对于 Linux 平台上的运行时错误,例如找不到共享库,可以通过设置 `LD_LIBRARY_PATH` 环境变量来包含所需的库路径,或者将库安装到标准搜索路径 `/lib` 或 `/usr/lib` 中[^3]。 9. **使用 QDir 创建多级目录**:如果程序内部需要创建多层目录结构,可以利用 `QDir::mkpath()` 方法来实现。此方法允许创建整个路径链中的所有必要父目录[^4]。 ```cpp bool isDirExist(QString fullPath) { QDir dir(fullPath); if(dir.exists()) { return true; } else { bool ok = dir.mkpath(fullPath); // 创建多级目录 return ok; } } ``` 通过上述步骤,大多数与目录创建相关的 Qt 问题应该能够得到解决。如果问题仍然存在,请提供具体的错误信息以便进一步诊断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值