elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [AYUDA] Obtener la fecha de modificacion de un archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Obtener la fecha de modificacion de un archivo  (Leído 7,121 veces)
maxgeniusgm

Desconectado Desconectado

Mensajes: 3


Ver Perfil
[AYUDA] Obtener la fecha de modificacion de un archivo
« en: 31 Octubre 2012, 00:07 am »

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!


En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: [AYUDA] Obtener la fecha de modificacion de un archivo
« Respuesta #1 en: 31 Octubre 2012, 00:59 am »

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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h> // para la ruta
  4. #include <dirent.h> // para la struct dirent
  5. #include <sys/stat.h> // para la struct stat
  6. #define TAM 256 // macro TAM de la ruta
  7.  
  8.  
  9. int main() {
  10.    char * ruta = malloc(TAM*sizeof(char));
  11.    strncpy(ruta,"Aqui_la_ruta_que_quieras",TAM);
  12.    struct dirent *entrada;
  13.    struct stat status;
  14.    DIR * dir = opendir(ruta); // abrimos el directorio
  15.    if (!dir) exit(1); // comprobamos si lo pudimos abrir
  16.    else {
  17.        chdir(ruta);
  18.        while ( (entrada=readdir(dir)) != NULL ) { // leemos entradas de directorio hasta que se devuelva puntero a NULL
  19.            if ( ( strcmp(entrada->d_name, ".") == 0 ) ||
  20.                 ( strcmp(entrada->d_name, "..") == 0 ) )
  21.                 continue; // Saltamos las entradas de directorio actual y directorio raíz
  22.            if (stat(entrada->d_name,&status) == 0) // cargamos la estructura stat (mejor usar lstat() para symbolic links)
  23.                puts(entrada->d_name); // mostramos el nombre de la entrada
  24.                puts((char *)ctime(&status.st_mtime)); // cogemos la fecha de modificación
  25.         }
  26.    }
  27. }
  28.  

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).


« Última modificación: 31 Octubre 2012, 01:03 am por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines