19.07.12, 23:36
|
#6
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 637
Bedankt: 228
|
Ok, ich habe es dann doch geschafft ... Das Programm ist in seinen Grundzügen fertig. Auf Wunsch kann ich auch noch Anpassungen vornehmen ...
Hier zum downloaden für Windows (DLLs sind enthalten)
Für diejenigen die auch den Code haben wollen, stelle ich (zumindest die wichtigen Funktionen damit es mit qt Läuft) zur Verfügung (für Kommentare war ich bis jetzt noch zu faul und searchAndCopy() ist die Hauptfunktion).
Code:
#include <QDir>
#include <QDirIterator>
#include <QList>
void searchAndCopy(QDir quelle, QDir ziel, QString suffix)
{
QList<QDir> dirListToCopy = getDir(quelle, suffix);
foreach(QDir dirToCopy, dirListToCopy)
{
copyDir(dirToCopy, ziel);
}
}
QList<QDir> getDir(QDir dir, QString suffix)
{
QList<QDir> result;
QList<QDir> dirList = search(dir, suffix, QDirIterator::Subdirectories);
foreach(QDir dir, dirList)
{
dir.cdUp();
if(!result.contains(dir.absolutePath()))
{
result.append(dir.absolutePath());
qDebug("Found Directory %s, with suffix %s.\n", qPrintable(dir.absolutePath()), qPrintable(suffix));
}
}
return result;
}
void copyDir(QDir quelle, QDir ziel)
{
ziel.mkdir(quelle.dirName());
qDebug("Copy Directory %s to %s", qPrintable(quelle.absolutePath()), qPrintable(ziel.absolutePath()));
QList<QDir> fileList = search(quelle, "", QDirIterator::NoIteratorFlags);
foreach(QDir file, fileList)
{
ziel.cd(quelle.dirName());
copyFile(file, ziel);
ziel.cdUp();
}
}
void copyFile(QDir quelle, QDir ziel)
{
QFile file(quelle.absolutePath());
if(quelle.dirName() != ziel.dirName())
{
ziel = ziel.absolutePath() + '/' + quelle.dirName();
}
file.copy(ziel.absolutePath());
qDebug("Copy File %s to %s", qPrintable(quelle.absolutePath()), qPrintable(ziel.absolutePath()));
}
QList<QDir> search(QDir dir, QString suffix, QDirIterator::IteratorFlags flag)
{
QList<QDir> result;
QDirIterator iterator(dir.absolutePath(), flag);
while (iterator.hasNext())
{
iterator.next();
if (iterator.fileInfo().isFile())
{
QString filename = iterator.fileName();
if (filename.endsWith(suffix))
{
result.append(iterator.filePath());
qDebug("Found matching pattern <%s>.\n", qPrintable(result.last().absolutePath()));
}
}
}
return result;
}
|
|
|