QT学习_QT远程文件升级
Posted Leslie X徐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT学习_QT远程文件升级相关的知识,希望对你有一定的参考价值。
QT文档升级
首先写配置文件:
[update]
filename = "D:\\\\lesliex\\\\QTpro\\\\UpdatePro\\\\testupdatefile\\\\file";
checkname = "file";
代码
选择已更新的文件夹
void MainWindow::on_pushButton_clicked()
{
updateDir = QFileDialog::getExistingDirectory(this,"select Dir",QDir::currentPath());
ui->plainTextEdit->appendPlainText("ready update...");
}
进行升级
void MainWindow::on_pushButton_2_clicked()
{
//读取配置文件
QSettings setting("..\\\\setting.ini",QSettings::IniFormat,this);
QString readyupdateDir = setting.value("/update/filename").toString();
QString checkName = setting.value("/update/checkname").toString();
//进行升级
QFileInfo fileInfo(readyupdateDir);
if(fileInfo.isDir()){
if(fileInfo.fileName() == checkName){
ui->plainTextEdit->appendPlainText("copying...");
copyToDir(updateDir,readyupdateDir);
ui->plainTextEdit->appendPlainText("update success!");
}
else
ui->plainTextEdit->appendPlainText("update error!");
}else
ui->plainTextEdit->appendPlainText("update error!");
}
文件夹覆盖操作
void MainWindow::copyToDir(QString FromDir, QString ToDir)
{
//获取两个文件夹
QDir sourceDir(FromDir);
QDir targetDir(ToDir);
//若目标文件不存在则创建
if(!targetDir.exists()) targetDir.mkdir(targetDir.absolutePath());
//获取源文件夹中文件信息
QFileInfoList sourceFileInfos = sourceDir.entryInfoList();
//逐个判别文件采取对应策略,注意QFileInfo类fileName和filePath的区别
for(auto i : sourceFileInfos){
//跳过"."".."文件
if(i.fileName()=="." || i.fileName()=="..") continue;
//如果是文件夹,则递归
else if(i.isDir()){
copyToDir(i.filePath(),targetDir.filePath(i.fileName()));
}
//如果是文件,如果文件存在则先删除,再复制
else if(i.isFile()){
if(targetDir.exists(i.fileName()))targetDir.remove(i.fileName());
QFile::copy(i.filePath(),targetDir.filePath(i.fileName()));
}
}
}
后续可扩展:解压缩包升级,网络远程升级
以上是关于QT学习_QT远程文件升级的主要内容,如果未能解决你的问题,请参考以下文章