0
J'ai le code suivant pour copier des fichiers dans des sous-dossiers. Mais toujours les 20 premières images sont copiées au lieu de 1-20 dans le premier dossier, 21-40 au deuxième dossier et 41-60 au troisième dossier:QT Division des fichiers dans le dossier en différents sous-dossiers
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));
}
}
Impressionnant merci! – user754730
Comment puis-je avoir un chevauchement pour les jeux d'images? Comme avoir l'image 1,2,3,4,5 et 6 dans la première partie, l'image 4,5,6,7,8 et 9 dans la deuxième partie et 7,8,9,10,11,12 dans la troisième partie partie? – user754730
Si vous voulez avoir des chevauchements alors le nombre de parties devient: 'int parties = (int) (fileNameList.size() - chevauchement)/(ui-> spinBox-> value() - chevauchement);'. Et l'index du fichier dans la boucle interne est: 'int index = i * (ui-> spinBox-> value() - chevauchement) + l;'. Ici 'overlap' est' 3'. – Nejat