Delete old files from directory / Alte Dateien von Verzeichnis löschen

The following snippets deletes old files from the folder and only keeps the given number of files. This can be used for example for a log folder to only keep around the last 5 files and delete older logs.

Das folgende Snippet löscht die älteren Dateien aus dem Verzeichnis und behält nur die in files übergebene Anzahl an Dateien. Dies kann z.B. benutzt werden um ältere Log-Dateien aus einem Verzeichnis zu entfernen und nur eine bestimmte Anzahl zu behalten.

void deleteOldFiles(QString folder, int files)
{
  QDir dir;
  dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
  dir.setSorting(QDir::Time | QDir::Reversed);
  dir.setPath(folder);

  QFileInfoList list = dir.entryInfoList();
  if (list.size() <= files)
  {
    return; //no files to delete
  } else
  {
    for (int i = 0; i < (list.size() - files); i++)
    {
      QString path = list.at(i).absoluteFilePath();
      QFile file(path);
      file.remove();
    }
  }
}

Werbung



comments powered by Disqus

Copyright Dunkel & Iwer GbR | Datenschutzerklärung | Impressum