QDir :: rename返回false

时间:2019-02-09 20:37:10

标签: qt

我想将文件从某个目录传输到另一个目录,但是当我使用QDir时。重命名似乎总是失败。

void handler::moveToTempFolder(QString localFilePath)
{

qDebug()<<localFilePath; <--- "C:/Users/user1/Pictures/IMG_00000009.jpg"

qDebug()<<"/TempFiles/" + getFileNameFromPath(localFilePath); <---- "/TempFiles/IMG_00000009.jpg" a folder that is in the same location as the .pro

QDir dir;
if(dir.rename(localFilePath,"/TempFiles/" + getFileNameFromPath(localFilePath)))
    qDebug()<<"Success";
else
    qDebug()<<"Failed";

}

我在终端上失败了。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

Qt没有方法来访问您的.pro文件所在的项目文件夹。可能是因为一旦部署此文件,除您的设备之外的任何其他设备都将没有该文件夹。

但是,它可以使用QDir :: currentPath()访问可执行文件所在的文件夹。

此外,我不确定您如何定义getFileNameFromPath-但可以使用QFileInfo来实现。

void MainWindow::moveToTempFolder(QString localFilePath)
{
    QFileInfo fileInfo(localFilePath);

    QDir dir;
    QString tempFilePath = dir.currentPath() + "/TempFiles/" + fileInfo.fileName();

    if(dir.rename(localFilePath, tempFilePath))
    {
        qDebug() << "Success";
    } else {
        qDebug() << "Failed";
    }

}

注意:从Qt Creator运行此文件时,您的/ TempFiles /文件夹很可能与/ debug /和/ release /文件夹位于同一文件夹中(从可执行文件上一级)。但是,一旦部署了该文件(或从.exe手动运行)-/ TempFiles /将与.exe放在同一文件夹中

答案 1 :(得分:1)

程序运行时的工作目录是build文件夹,而不是project文件夹。我的猜测是那是你的问题。