[AYUDA] Obtener la fecha de modificacion de un archivo

Iniciado por maxgeniusgm, 31 Octubre 2012, 00:07 AM

0 Miembros y 1 Visitante están viendo este tema.

maxgeniusgm

Gente! Buenas a todos! Vuelvo con mis preguntas de principiantes, aunque probablemente no me conozcan por que solo postee una vez y me conteste solo  ;D.

Les quiero preguntar como puedo obtener la fecha de ultima modificacion de un archivo en un programa hecho en visual c/c++. Lo necesito para saber si el programa debe actualizar un archivo o no.

Desde ya muchas gracias a todos!

BatchianoISpyxolo

#1
Puedes hacerlo con una estructura stat a partir de leer la entrada de directorio que corresponda al fichero que quieres analizar.

Te pongo un esbozo en C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> // para la ruta
#include <dirent.h> // para la struct dirent
#include <sys/stat.h> // para la struct stat
#define TAM 256 // macro TAM de la ruta


int main() {
   char * ruta = malloc(TAM*sizeof(char));
   strncpy(ruta,"Aqui_la_ruta_que_quieras",TAM);
   struct dirent *entrada;
   struct stat status;
   DIR * dir = opendir(ruta); // abrimos el directorio
   if (!dir) exit(1); // comprobamos si lo pudimos abrir
   else {
       chdir(ruta);
       while ( (entrada=readdir(dir)) != NULL ) { // leemos entradas de directorio hasta que se devuelva puntero a NULL
           if ( ( strcmp(entrada->d_name, ".") == 0 ) ||
                ( strcmp(entrada->d_name, "..") == 0 ) )
                continue; // Saltamos las entradas de directorio actual y directorio raíz
           if (stat(entrada->d_name,&status) == 0) // cargamos la estructura stat (mejor usar lstat() para symbolic links)
               puts(entrada->d_name); // mostramos el nombre de la entrada
               puts((char *)ctime(&status.st_mtime)); // cogemos la fecha de modificación
        }
   }
}


Ahí te dejo el código medio comentado. Modifícalo a tus necesidades :)

Bueno, el código lee las entradas de un directorio y posteriormente lista el nombre de cada entrada junto a su última fecha de modificación (m_time de la struct stat).
Puede que desees aprender a programar desde 0: www.espascal.es