QStringList Linux_Comander::scanfolder(QString path){ dir_f.cd(path); dir_f.setSorting(QDir::DirsFirst); while(i_f != dir_f.count()) { if ((dir_f.entryInfoList().value(i_f).isDir()) && (dir_f.entryList().value(i_f) != ".") && (dir_f.entryList().value(i_f) != "..")) { map_fs.append(dir_f.entryList()); i_f++; scanfolder(dir_f.entryList().value(i_f)); } } return map_fs; }
void Linux_Comander::CopyFolder(QString strFrom, QString strTo){ QDir dir; QFile file; //strFrom - имя папки, откуда копировать //strTo - имя папки, куда копировать //убедимся, что имена заканчиваются слэшем, если нет - добавим if (strTo.right(1) != "") strTo += '/'; if (strFrom.right(1) != "") strFrom += '/'; //создаем ("копируем") текущую папку dir.mkdir(strTo); qDebug() << strTo; //будем перебирать все файлы и папки в текущей QDirIterator itr(strFrom,QDirIterator::Subdirectories); while(itr.hasNext()) { QString strFilePath = itr.filePath(); QString strFileTitle = itr.fileName(); //отсекаем "." и ".." if (itr.fileName() != "." && itr.fileName() != "..") { if (itr.fileInfo().isDir()) //рекурсивное погружение в найденную папку (strTo + strFileTitle) CopyFolder(strFilePath, strTo + strFileTitle); else //просто копируем файл file.copy(strFilePath, strTo + strFileTitle); } itr.next(); }}
QFileSystemWatcher: FindNextChangeNotification failed!! (???????? ? ???????.)
bool Linux_Comander::clearAndRemoveDirectory(QString dir) { QDir dirObj(dir); foreach (QString fileName, dirObj.entryList()) { if (fileName == "." || fileName == "..") continue; if (QFileInfo(dirObj.filePath(fileName)).isDir()) { clearAndRemoveDirectory(dirObj.filePath(fileName)); } else { dirObj.remove(fileName); } } if (!dirObj.rmdir(dir)) { QMessageBox::information(this,"Ошибка удаления","Не удалось удалить временную директорию "+dir); return false; } left_pole_update(model_l->index(ui->adress_line_left->text().trimmed())); right_pole_update(model_r->index(ui->adress_line_right->text().trimmed())); return true; }