Qt之文件的备份、导入和导出


一个库函数解决所有问题:copy(源地址,目的地址);


//备份数据库文件
bool MainWindow::setBackupDB()
{
    QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";

//    创建备份文件夹
    QDir dir(QDir::currentPath()+"/backup");
    if(!dir.exists()){
        dir.mkdir(QDir::currentPath()+"/backup");
    }
//检查源数据库文件是否存在
    bool isExist = QFile::exists(QDir::currentPath()+"/temp/ICEMS.db");
    if(!isExist){
         QMessageBox::about(this,QString::fromLocal8Bit("备份数据库"),
                            QString::fromLocal8Bit("备份失败,源数据库文件不存在!"));
         return false;
    }
    else
    {
        //    获取当前时间
            QDateTime current_date_time = QDateTime::currentDateTime();
            QString date = current_date_time.toString("yyyy-MM-dd hh-mm-ss");
//            重构当前备份目录及文件名,加入时间字段
            QString destFileName = QDir::currentPath()+"/backup/"+ QString("ICMES_backup%1.db").arg(date);

//            info = QFileInfo(destFileName);
//            destFileName = info.fileName();
            //调用备份命令copy
            if(QFile::copy(sourceFileName,destFileName))
            {
                return true;
            }
            else
            {
                return false;
            }

    }

}

//导出数据库
void MainWindow::on_pushButton_24_clicked()
{
    QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";

//检查源数据库文件是否存在
    bool isExist = QFile::exists(QDir::currentPath()+"/temp/ICEMS.db");
    if(!isExist){
         QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
                            QString::fromLocal8Bit("导出失败,源数据库文件不存在!"));
         return;
    }
    else
    {
//        获取选择文件路径
        QString destFileName = QFileDialog::getSaveFileName(
                    this,QString::fromLocal8Bit("另存为"),sourceFileName,"*.db");
        //调用备份命令copy
        if(destFileName.isEmpty())
        {
            QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
                               QString::fromLocal8Bit("导出失败,目的地址为空或取消导出!"));
            return;
        }
        else
        {

            if(QFile::copy(sourceFileName,destFileName))
            {
                QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
                                   QString::fromLocal8Bit("导出成功"));
            }
            else
            {
                QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
                                   QString::fromLocal8Bit("导出失败,文件复制错误,检查所选目录中是否已存在相同文件名的文件!"));
            }
        }


    }
}

//导入数据库
void MainWindow::on_pushButton_25_clicked()
{
//    关闭当前数据库连接,解除数据库文件占用
    closeDatabase("link");
    QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";

    QString destFileName = QFileDialog::getOpenFileName(
                this,QString::fromLocal8Bit("                                                                    "
                                            "选择要导入的数据库文件"),"C:/Users/Administrator/Desktop","*.db");

    QFileInfo info(destFileName);
    QString fileName = info.fileName();

    if(fileName == "ICEMS.db")
    {

        QFile file;
        file.remove(sourceFileName);

        if(QFile::copy(destFileName,sourceFileName))
        {
            QMessageBox::about(this,QString::fromLocal8Bit("导入数据库"),
                               QString::fromLocal8Bit("导入成功"));
        }
        else
        {
            QMessageBox::about(this,QString::fromLocal8Bit("导入数据库"),
                               QString::fromLocal8Bit("导入失败,文件复制错误,检查所选目录中是否已存在相同文件名的文件!"));
        }

    }
    else
    {
        if(destFileName.isEmpty())
        {
            QMessageBox::warning(this,QString::fromLocal8Bit("导入文件信息"),QString::fromLocal8Bit("导入失败,已取消导入!"),QMessageBox::Yes);

        }
        else
        {
            QMessageBox::warning(this,QString::fromLocal8Bit("导入文件信息"),QString::fromLocal8Bit("导入文件名错误,请修改文件名为ICEMS.db"),QMessageBox::Yes);

        }
     }
    //    恢复当前数据库连接
    createConnection();
//    qDebug() << destFileName << endl << fileName;
}

你可能感兴趣的:(Qt)