2017-05-04 2 views
0

Ich versuche, eine Methode zum Überwachen eines Verzeichnisses für eine Datei erstellt werden. Diese Datei hat die Erweiterung .complete. Wenn es nicht da ist, möchte ich darauf warten, dass es erscheint. Wenn es angezeigt wird, möchte ich herausfinden, den Namen der Datei vor der Erweiterung extrahieren, löschen Sie die Datei .complete, einige Verarbeitung, und dann wieder auf eine neue .complete Datei zu hören.Warten auf eine Datei erstellt werden

Hier ist, was ich bisher habe. Ich denke, ich brauche nur Hilfe, um den Namen der Datei zu extrahieren, vorausgesetzt, ich habe die Wildcard richtig gemacht.

while(1) { 
    if (!boost::filesystem::exists("/var/test/*.complete")) { 
     cout << ".complete file does not exist" << endl; 
    } 
    else { 

     //extract name of .complete file minus extension 
     //do my processing 
     system("rm *.complete"); 
    } 
} 
+0

ich, dass 'boost nicht bewusst war: : filesystem :: exists 'führt eine Platzhaltererweiterung durch. Bist du sicher, dass es das tut? –

+0

es scheint, als ob es nicht ohne einige zusätzliche Schritte – user1984300

+0

boost Dateisystem Bibliothek ist in der Lage, regelmäßige Dateien unter angegebenen Pfad zu iterieren. es ist auch in der Lage, die Erweiterung einer regulären Datei zu geben. – ZFY

Antwort

0

Ich bin nicht zu erhöhen, aber in ein paar einfachen Schritt verwendet werden, können Sie bekommen, was Sie

Schritt wollen 1: Lesen Sie das Verzeichnis (readdir oder gleichwertig)

Schritt 2: Sie ‚ll alle Dateien erhalten, die in dem Verzeichnis als const char *

Schritt 3: std :: string statt const char *

Schritt 4: fileName.find (" complete")

Sie bekommen es :)

Verwandte Themen