环境说明
windowns+qt.7.0MinGw
软件的构造
- 1.按照特定的文件类型对文件进行打包
- 2.多线程复制文件
- 3.过滤的条件有磁盘,文件的创建时间,文件的类型,文件的大小
- 4.加密压缩
- 5,传输到特定的服务器
运行的实例
源码
#ifndef ZIPFILESEND_H
#define ZIPFILESEND_H
#include <QWidget>
#include <QFileInfo>
#include <QSettings>
#include <QDebug>
#include <QDir>
#include <QCoreApplication>
#include <QThreadPool> // 整个电脑的磁盘扫描需要很多时间,开启多线程的方式处理
#include <QRunnable>
#include <QProcess>
#include <QDateTime>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
class MyRun;
class ZipFileSend : public QWidget
{
Q_OBJECT
public:
ZipFileSend(QWidget *parent = 0);
~ZipFileSend();
void readSet();
void readPath(QString path);
bool copyFile(QString src_file,QString dest_file ); //按类型
bool copyFile2(QString src_file,QString dest_file );//按时间
QString getDestFileName(const QString& src_file_name);
QStringList getDisk();
void run();
void uploadZip();
friend class MyRun;
private:
//=====磁盘压缩需要的信息
QString backup_path;
QStringList absolute_files_name;
QStringList accept_file_types;
QString accept_file_time;
QString choose_date_or_type;
QString filter_disk;
//=====ftp连接信息======
QString ftp_host,ftp_port,ftp_user,ftp_passwd,ftp_path;
};
class MyRun: public QRunnable
{
public:
MyRun(QString path,ZipFileSend* zip);
ZipFileSend* zip;
protected:
virtual void run();
private:
QString path;
};
#endif // ZIPFILESEND_H
#include "zipfilesend.h"
#include <QCoreApplication>
MyRun::MyRun(QString path,ZipFileSend* zip)
{
this->path=path;
this->zip=zip;
this->setAutoDelete(true);
}
void MyRun::run()
{
this->zip->absolute_files_name.clear();
this->zip->readPath(this->path);
if(this->zip->absolute_files_name.length()==0)
return;
//1.1==============进行文件的复制===================
qDebug()<<"进行文件的复制";
foreach (QString src_file_name, this->zip->absolute_files_name) {
QString dest_file_name=this->zip->getDestFileName(src_file_name);
if(this->zip->choose_date_or_type=="time")
this->zip->copyFile2(src_file_name,dest_file_name);
else if(this->zip->choose_date_or_type=="type")
this->zip->copyFile(src_file_name,dest_file_name);
else
continue;
<