我有以下代码将文件复制到子文件夹。但总是将前20张图片复制而不是1-20到第一个文件夹,21-40到第二个文件夹,41-60到第三个文件夹:
QDir dir(ui->lineEdit->text());
QList<QString> fileNameList;
QFileInfoList files = dir.entryInfoList();
foreach(const QFileInfo &fi, files) {
if(!fi.isDir()) {
if (fi.fileName().endsWith(".JPG")) {
fileNameList.append(fi.fileName());
}
}
}
int parts = (int) (fileNameList.size()) / ui->spinBox->value();
qDebug() << "parts=" << parts;
for (int i = 0; i < parts; i++) {
QDir().mkdir(ui->lineEdit->text() + QString("/part%1").arg(i + 1));
for (int l = 0; l < ui->spinBox->value(); l++) {
QFile::copy(ui->lineEdit->text() + "/" + fileNameList.at(l), ui->lineEdit->text() + QString("/part%1").arg(i + 1) + "/" + fileNameList.at(l));
}
}
答案 0 :(得分:1)
问题在于fileNameList
的索引编制。您总是将其从0
编入索引到l
这导致始终复制第一个文件。应该是这样的:
int index = i*ui->spinBox->value() + l;
QFile::copy(ui->lineEdit->text() + "/" + fileNameList.at(index), ui->lineEdit->text() + QString("/part%1").arg(i + 1) + "/" + fileNameList.at(index));