SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: alex1510 en Martes 10 de Noviembre de 2009, 17:45

Título: Manejo de archivos
Publicado por: alex1510 en Martes 10 de Noviembre de 2009, 17:45
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.  
Título: Re: Manejo de archivos
Publicado por: Eternal Idol en Martes 10 de Noviembre de 2009, 21:40
Tenes que enumerar los archivos ... en Windows tenes FindFirstFile y FindNextFile para eso.
Título: Re: Manejo de archivos
Publicado por: alex1510 en Martes 10 de Noviembre de 2009, 22:59
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.
Título: Re: Manejo de archivos
Publicado por: Eternal Idol en Miércoles 11 de Noviembre de 2009, 00:08
Se puede buscar con *.plf, fijate en la MSDN (http://msdn.microsoft.com) hay ejemplos.
Título: Re: Manejo de archivos
Publicado por: alex1510 en Domingo 15 de Noviembre de 2009, 15:51
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
Título: Re: Manejo de archivos
Publicado por: alex1510 en Domingo 15 de Noviembre de 2009, 19:17
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.