2010-11-25 5 views
7

Ich bin mit der Boost::FileSystem Bibliothek mit C++ unter Linux-Plattform ausgeführt wird, und ich habe eine Frage folgende:C++: System Boost-Datei, die eine Liste von Dateien, die älter als eine bestimmte Zeit zurück

Ich mag eine Liste haben, Dateien, die älter als eine bestimmte Datumszeit sind. Ich weiß nicht, ob das boost::FileSystem bieten, ein solches Verfahren wie:

vector<string> listFiles = boost::FileSystem::getFiles("\directory", "01/01/2010 12:00:00"); 

Wenn ja, könnten Sie bitte Beispielcode zur Verfügung stellen?

+0

möglich duplicate von [wie kann ich eine Liste von Dateien in einem Ordner bekommen, in dem die Dateien mit modifiziertem Datum sortiert sind] (http://stackoverflow.com/questions/4283546/how-can-i-get- a-list-of-files-in-einem-ordner-in-dem-die-dateien-sind-sortierte-mit-mod) – dandan78

Antwort

11

Boost :: Dateisystem bietet keine Funktion genau so. Aber Sie können diese verwenden:

http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/reference.html#last_write_time

als Grundlage Ihrer eigenen zu schreiben. Hier ist ein Beispielcode mit last_write_time:

#include <boost/filesystem/operations.hpp> 
#include <ctime> 
#include <iostream> 

int main(int argc , char *argv[ ]) { 
    if (argc != 2) { 
     std::cerr << "Error! Syntax: moditime <filename>!\n" ; 
     return 1 ; 
    } 
    boost::filesystem::path p(argv[ 1 ]) ; 
    if (boost::filesystem::exists(p)) { 
     std::time_t t = boost::filesystem::last_write_time(p) ; 
     std::cout << "On " << std::ctime(&t) << " the file " << argv[ 1 ] 
    << " was modified the last time!\n" ; 
     std::cout << "Setting the modification time to now:\n" ; 
     std::time_t n = std::time(0) ; 
     boost::filesystem::last_write_time(p , n) ; 
     t = boost::filesystem::last_write_time(p) ; 
     std::cout << "Now the modification time is " << std::ctime(&t) << std::endl ; 
     return 0 ; 
    } else { 
     std::cout << "Could not find file " << argv[ 1 ] << '\n' ; 
     return 2 ; 
    } 
} 
+0

danke. Ich habe diesen Beispielcode von Boost: fileSystem gesehen, aber wie kann ich die Dateien sortieren? – olidev

+1

@JoesyXHN: Bitte zeigen Sie mir den Code, den Sie bisher bekommen haben, und ich bin glücklich, Ihnen weiter zu helfen. Aber es gibt einige Anstrengungen auf Ihrer Seite. – nabulke

+1

Hallo Nabulke. Ich versuche, etwas ähnliches zu tun http://stackoverflow.com/q/7056882/434051, ich habe Code-Demo zur Verfügung gestellt, und ich verstehe nicht, was falsch ist (während es ganz ähnlich aussieht deins) = ( – Rella

1

Sie eine std verwenden können :: Karte (last_write_time, filename), um die Datei zuletzt geändert Zeit zu speichern und den vollständigen Dateipfad und das tun, um eine In-Order-Traversal zu sortieren die Daten.

Verwandte Themen