c++ - por - organizar archivos y carpetas procedimiento convencional
¿Cómo obtener una lista de archivos en una carpeta en la que los archivos están ordenados con fecha de modificación? (1)
Necesito una lista de archivos en una carpeta y los archivos se ordenan con su fecha de modificación.
Estoy trabajando con C ++ en Linux, la biblioteca Boost es compatible.
¿Podría alguien proporcionarme alguna muestra del código de cómo implementar esto?
La mayoría de los sistemas operativos no devuelven entradas de directorio en ningún orden particular. Si desea clasificarlos (probablemente debería hacerlo si va a mostrar los resultados a un usuario humano), debe hacerlo en un pase por separado. Una forma de hacerlo es insertar las entradas en std::multimap
, algo así:
namespace fs = boost::filesystem;
fs::path someDir("/path/to/somewhere");
fs::directory_iterator end_iter;
typedef std::multimap<std::time_t, fs::path> result_set_t;
result_set_t result_set;
if ( fs::exists(someDir) && fs::is_directory(someDir))
{
for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter)
{
if (fs::is_regular_file(dir_iter->status()) )
{
result_set.insert(result_set_t::value_type(fs::last_write_time(dir_iter->path()), *dir_iter));
}
}
}
Luego puede iterar a través de result_set
, y las entradas mapeadas de boost::filesystem::path
estarán en orden ascendente.