QT将文件夹内的文件拆分到不同的子文件夹中

时间:2014-06-24 07:50:01

标签: qt file-copying

我有以下代码将文件复制到子文件夹。但总是将前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));
    }
}

1 个答案:

答案 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));