Controllo esistenza file con Qt in C++

Mattepuffo's logo
Controllo esistenza file con Qt in C++

Controllo esistenza file con Qt in C++

Oggi vediamo una piccola clase con una funzione per controllare l'esistenza di un file.

Il file lo cercheremo in più directory tanto per complicare un pò le cose.

Cominciamo con il file .h:

#ifndef CONTROLFILE_H
#define CONTROLFILE_H

#include <QFile>
#include <QStringList>

class ControlFile
{
public:
    ControlFile();
    virtual ~ControlFile();
    bool checkFile(QString file);
};

#endif // CONTROLFILE_H

Per i nostri scopi abbiamo importato i moduli QFile, che rappresenta i file, e QStringList che ci serve per costruire una lista di stringhe.

A questo punto passiamo al file di implementazione:

#include "controlfile.h"

ControlFile::ControlFile()
{
}

bool ControlFile::checkFile(QString file)
{
    bool check = FALSE;
    QStringList searchPaths;
    searchPaths << "/usr/bin/" + file << "/usr/local/bin/" + file << "/bin/" + file;

    for(int i = 0; i < searchPaths.size(); i++)
    {
        QFile f(searchPaths[i]);
        if(f.exists()) {
            check = TRUE;
            break;
        }
    }

    return check;
}

ControlFile::~ControlFile()
{
}

La nostra funzione accetta come parametro un oggetto QString, che rappresenta il file da cercare.

Nell'oggetto QStringList mettiamo la lista delle directory in cui cercare.

Nel ciclo for cicliamo sulla lista, e per ogni voce controlliamo l'esistenza del file con la funzione exists dell'oggetto QFile.


Condividi

2 Commenti

  • fermat

    si anche.<br />avevo scritto questo codice di fretta per un progetto che poi ho abbandonato.<br />non mi ci sono mai soffermato però!<br />grazie per la segnalazione!

    18/02/2013
  • PaceyIV

    Potevi anche semplificare facendo diretto un return true nell'if, e un return false fuori dal for. Risparmi un boolean e il salto incondizionato del break.

    18/02/2013

Commentami!