Trick: QT解决文件冲突两种方式(覆盖、自动重命名)

bool DFileManager::ManageConflictInCopy(QString& strTargetFile, QString strTargetDir, QString strConfictMode){
    QDir dirtgt(strTargetDir);
    if(!dirtgt.exists() && !dirtgt.mkpath(strTargetDir)){
        ShowWarning(NULL, tr("警告"), tr(QString("目标目录%1不存在。").arg(strTargetDir).toUtf8()), QDialogButtonBox::Ok);
        return false;
    }
    if (strConfictMode == "cover" && CheckFilePath(strTargetFile)){  // 重名文件覆盖
        QMessageBox::StandardButton reply = ShowQuestion(NULL, tr("提问"), tr("目标目录已存在指定文件,确认覆盖?"), QDialogButtonBox::Yes|QDialogButtonBox::No, QDialogButtonBox::Yes);
        if (reply != QMessageBox::Yes){
            return false;
        }
    }
    else if(strConfictMode == "rename" && CheckFilePath(strTargetFile)){  // 重名文件自动重命名
        QString strTargetPath = strTargetFile;
        QFileInfo infotgt(strTargetFile);
        QString strtgtdir = infotgt.absolutePath();
        QString strtgtbasename = infotgt.baseName();
        QString strtgtsuffix = infotgt.completeSuffix();
        int cnt = 0;
        while(dirtgt.exists(strTargetFile)){
            strTargetPath = strtgtdir + strtgtbasename + "_" + QString::number(++cnt) + strtgtsuffix;  // 新路径拼接
        }
        strTargetFile = strTargetPath;
    }

    // 没有冲突 或 用户确认覆盖
    return true;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值