备份程序-遍历

#include "fllemanage.h"
#include "ui_fllemanage.h"

fllemanage::fllemanage(QWidget *parent)
: QWidget(parent)
, ui(new Ui::fllemanage)
{
ui->setupUi(this);

//copy测试!!!!!!
// QFile src("F:/src");
// QFile dst("F:/dst");

// bool success = true;
// success &= src.open( QFile::ReadOnly );
// success &= dst.open( QFile::WriteOnly | QFile::Truncate );
// success &= dst.write( src.readAll() ) >= 0;

// QFile::copy("F:/src/1.txt" , "F:/dst/2.txt");
// src.close();
// dst.close();

// //写文本
// QFile f("F:/src/1.txt");
// if(!f.open(QIODevice::WriteOnly | QIODevice::Text))
// {
// qDebug() << "Open failed." << endl;
// }

// QTextStream txtOutput(&f);
// QString s1("123");
// quint32 n1(123);

// txtOutput << s1 << endl;
// txtOutput << n1 << endl;

// f.close();

// //读文本
// QFile f("F:/src/1.txt");
// if(!f.open(QIODevice::ReadOnly | QIODevice::Text))
// {
// qDebug() << "Open failed." << endl;
// }

// QTextStream txtInput(&f);
// QString lineStr;
// while(!txtInput.atEnd())
// {
// lineStr = txtInput.readLine();
// qDebug() << lineStr << endl;
// }

// f.close();
}

fllemanage::~fllemanage()
{
delete ui;
}

void fllemanage::on_pushButton_clicked()
{
// int count = 0;
// QString dirpath = "C:/Users/00/Desktop/git clone/OpenCV-Python-Tutorial/.idea";
// //设置要遍历的目录
// QDir dir(dirpath);
// qDebug()<<dirpath<<endl;
// //设置文件过滤器
// QStringList nameFilters;
// //设置文件过滤格式
// nameFilters << "*.xml";
// dir.setNameFilters(nameFilters);
// qDebug()<<dir.entryList()<<endl;
// qDebug()<<dir.entryInfoList()<<endl;
// //将过滤后的文件名称存入到files列表中
// QStringList files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);
// for(int i = 0; i<files.size(); i++)
// {
// qDebug()<<"now, it's output from QStringlist"<<endl;
// qDebug()<<files[i]<<endl;
// }

//QStringList list = findALLfiles("C:/Users/00/Desktop/vsrun/123");
//QStringList list = findALLfiles("C:/Users/00/Desktop/vsrun");
QStringList list = findALLfiles("C:/Users/00/Desktop/git clone");
//for(int i = 0 ; i <list.size(); i++)
//qDebug() <<list[i]<<endl;
QStringList purposelist;
purposelist = list.filter(".jpg");
int count = 0;
for (int i = 0; i < purposelist.size(); i++)
{
qDebug() << purposelist[i] << endl;
count++;
}
qDebug() << "the max file has " << list.size() << endl;
qDebug() << "the purpose file has " << count << endl;

//新建文件夹(目标文件保存的位置)
// QDir dir("C:/Users/00/Desktop/vsrun");
// if(!dir.exists("copy to here")){
// dir.mkdir("copy to here");
// }
QString toDir = "C:/Users/00/Desktop/123";

//toDir.replace("\\","/");

QDir dir(toDir);
if (!dir.exists(toDir)) {
dir.mkdir(toDir);
}

QFile destFile(toDir);
bool success = true;
success &= destFile.open(QFile::WriteOnly | QFile::Truncate);

for (int i = 0; i < purposelist.size(); i++)
{
std::string pur = purposelist[i].toStdString();//都转换为string
// qDebug()<<pur<<endl;
std::string sdir = toDir.toStdString();

int pos = pur.find_last_of('/'); //找到最后/
std::string s(pur.substr(pos+1));
sdir.append("/");

sdir.append(s);
QString qsdir = QString(QString::fromLocal8Bit(sdir.c_str()));
qDebug()<<qsdir<<endl;
if (QFile::copy(purposelist[i], qsdir)) { //将文件复制到新的文件路径下
{
if(QFile::copy(purposelist[i],toDir))
qDebug() << QStringLiteral("复制成功");
}
}
}
}

//迭代器遍历所有文件并返回
QStringList fllemanage::findALLfiles(const QString &dir_path) {
QStringList get_files;
QDir dir(dir_path);
if (!dir.exists())
{
qDebug() << "it is not true dir_path";
}

/*设置过滤参数,QDir::NoDotAndDotDot表示不会去遍历上层目录*/
QDirIterator dir_iterator(dir_path, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);

while (dir_iterator.hasNext())
{
dir_iterator.next();
QFileInfo file_info = dir_iterator.fileInfo();
QString files = file_info.absoluteFilePath();
get_files.append(files);
}

return get_files;
}

备份程序-遍历
https://qianxunslimg.github.io/2021/12/02/bei-fen-cheng-xu-bian-li/
作者
qianxunslimg
发布于
2021年12月2日
许可协议