• Miércoles 15 de Mayo de 2024, 00:19

Autor Tema:  Manejo de archivos  (Leído 1989 veces)

alex1510

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Manejo de archivos
« en: Martes 10 de Noviembre de 2009, 17:45 »
0
Hola buenas. He conseguido una función que me dice cual es la fecha de modificación de un archivo. Lo que no consigo es, en un conjunto de archivos de una carpeta, todos ellos con la misma extensión y con diferente nombre, quedarme con el ultimo modificado. Sabría alguien decirme algo?? Muchas gracias.
El codigo para el ultimo modificado es:
Código: C
  1.  
  2. #include <time.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. main(){
  8.     char file[] = "C:/Users/Alex/Desktop/ArchivosC/pepe.txt";
  9.     char t[ 100 ] = "";
  10.     struct stat b;
  11.     if (!stat(file, &b)){
  12.         strftime(t, 100, "%d/%m/%Y %H:%M:%S", localtime( &b.st_mtime));
  13.         printf("nLast modified date and time = %sn", t);
  14.     }
  15.     else{
  16.         printf("Cannot display the time.n");
  17.     }
  18.     getch();
  19. }
  20.  
  21.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Manejo de archivos
« Respuesta #1 en: Martes 10 de Noviembre de 2009, 21:40 »
0
Tenes que enumerar los archivos ... en Windows tenes FindFirstFile y FindNextFile para eso.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

alex1510

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Manejo de archivos
« Respuesta #2 en: Martes 10 de Noviembre de 2009, 22:59 »
0
Ok. Sirve de ayuda, pero si quiero solo los que tienen extension .plf me pierdo, además los tendría que recorrer y no se me ocurre la forma.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Manejo de archivos
« Respuesta #3 en: Miércoles 11 de Noviembre de 2009, 00:08 »
0
Se puede buscar con *.plf, fijate en la MSDN hay ejemplos.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

alex1510

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Manejo de archivos
« Respuesta #4 en: Domingo 15 de Noviembre de 2009, 15:51 »
0
No lo consigo hacer. Por favor, alguien me puede prestar algo de ayuda??Se que van encaminado a lo que dice Eternal, pero no consigo avanzar. No se que mas debo hacer. Gracias

alex1510

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Manejo de archivos
« Respuesta #5 en: Domingo 15 de Noviembre de 2009, 19:17 »
0
Hola buenas. Ya he conseguido hacerlo (creo). Adjunto el código. Me queda una duda que no consigo resolver y espero conozcan. Las funciones find first file y find next file te muestran los archivos por que orden??? ultima modificación???.Gracias. Tampoco se para que sirve dwerror y getlasterror.
Código: C
  1.  
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <sys/stat.h>
  8. #include <dirent.h>
  9. #include <unistd.h>
  10.  
  11. main()
  12. {
  13. DWORD dwError = ERROR_SUCCESS;
  14. HANDLE hFind;
  15. WIN32_FIND_DATA FindFileData;
  16. //Find last modified log file
  17.     hFind = FindFirstFile("B:/EN6/*.plf", &FindFileData);
  18.     if (hFind == INVALID_HANDLE_VALUE)
  19.     {
  20.       printf ("Fallo encontrar el primer archivo (%d)n", GetLastError());
  21.       return;
  22.     }
  23.     else
  24.     {
  25.       printf("El primer archivo encontrado es %sn",FindFileData.cFileName);
  26.  
  27.       //List all the other files in the directory.
  28.       while (FindNextFile(hFind, &FindFileData) != 0)
  29.       {
  30.          printf ("Siguiente es %sn", FindFileData.cFileName); //NOT DISPLAYING ALL NAMES CONSISTENTLY??
  31.  
  32.       }
  33.  
  34.       dwError = GetLastError();
  35.       FindClose(hFind);
  36.  
  37.       if (dwError != ERROR_NO_MORE_FILES)
  38.       {
  39.          printf ("FindNextFile error. Error is %u.n", dwError);
  40.          return (-1);
  41.       }
  42.  
  43.     }
  44.     getchar();
  45. }
  46.  
  47.  
  48.