2010-11-25 7 views
7

estoy usando la biblioteca Boost::FileSystem con C++ se ejecuta bajo la plataforma Linux y tengo una pregunta siguiente:C++: sistema de archivos impulso para devolver una lista de los más antiguos a una hora específica

me gustaría tener una lista de archivos que son modificados más antiguos que un tiempo de fecha determinado. No sé si el boost::FileSystem ofrecen un método como:

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

En caso afirmativo, ¿podría proporcionar el código de la muestra?

+0

posible duplicado de [cómo puedo obtener una lista de archivos en una carpeta en la que los archivos están ordenados con fecha y hora modificada] (http://stackoverflow.com/questions/4283546/how-can-i-get- a-list-of-files-in-a-folder-in-which-the-files-are-sorted-with-mod) – dandan78

Respuesta

11

Boost :: filesystem no ofrece una función exactamente así. Pero usted puede usar esto:

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

como base para escribir su propia. Aquí hay un código de ejemplo utilizando 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

gracias. Vi este código de ejemplo de Boost: fileSystem, pero ¿cómo puedo ordenar los archivos? – olidev

+1

@JoesyXHN: Por favor, muéstreme el código que recibió hasta el momento, y me complace poder ayudarlo más. Pero se requiere un esfuerzo de tu parte. – nabulke

+1

Hola nabulke. Intento hacer algo similar http://stackoverflow.com/q/7056882/434051, proporcioné la demostración del código, y no entiendo qué es lo que está mal (aunque se parece bastante al tuyo) = ( – Rella

1

Puede utilizar un std :: mapa (last_write_time, nombre de archivo) para almacenar el archivo de última modificación y la ruta del archivo absoluto y el hacer un recorrido en orden para ordenar los datos.

Cuestiones relacionadas