我想将文件从某个目录传输到另一个目录,但是当我使用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";
}
我在终端上失败了。有人可以帮忙吗?
答案 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文件夹。我的猜测是那是你的问题。