Italiano
HOME | PROGETTI | CLASSI C++ | Sorgenti c\c++ | Galleria | Guestbook | Server BW | Contattami | Login

<< Elenco dei files >>

visiste: 1001


Questo codice mostra come si possono utilizzare le Api messe a disposizione da Windows per avere velocemente l'elenco dei files di una cartella (comprese le sottocartelle). E' anche un esempio di algoritmo ricorsivo. (inserendoci uno sleep di qualche millisecondo ad ogni ciclo il programma puo tranquillamente lavorare in background).

  1. //*************************************//
  2. //******** created by mamo139 *********//
  3. //*** http://mamo139.altervista.org ***//
  4. //*************************************//
  5.  
  6.  
  7. main () {
  8.  
  9. trova_files("c:\\");
  10.  
  11. }
  12.  
  13.  
  14. void trova_files (char *cartella) {
  15.  
  16. FILE *log = fopen("log.txt","a+");
  17. WIN32_FIND_DATA dati_file;
  18.  
  19. char dir[1000] = "\0";
  20.  
  21. strcpy(dir,cartella);
  22. strcat(dir,"*");
  23.  
  24. //MessageBox(NULL, dir,"What this says", MB_OK);
  25.  
  26.  
  27. HANDLE ricerca = FindFirstFile(dir,&dati_file);
  28. if ( (dati_file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && !( (dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '\0') ||(dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '.' && dati_file.cFileName[2] == '\0') ) )
  29. {
  30. char newdir[1000];
  31. strcpy(newdir,cartella);
  32. strcat(newdir,dati_file.cFileName);
  33. strcat(newdir,"\\");
  34. trova_files(newdir);
  35. //fprintf(log,"DIR %s%s\n",cartella,dati_file.cFileName);
  36. Sleep(10);
  37. }
  38. else if (!( (dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '\0') ||(dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '.' && dati_file.cFileName[2] == '\0') ) )
  39. fprintf(log,"FILE %s%s\n",cartella,dati_file.cFileName);
  40.  
  41.  
  42. while (FindNextFile(ricerca,&dati_file) != 0) {
  43.  
  44. if ( (dati_file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && !( (dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '\0') ||(dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '.' && dati_file.cFileName[2] == '\0') ) )
  45. {
  46. char newdir[1000];
  47. strcpy(newdir,cartella);
  48. strcat(newdir,dati_file.cFileName);
  49. strcat(newdir,"\\");
  50. trova_files(newdir);
  51. //fprintf(log,"DIR %s%s\n",cartella,dati_file.cFileName);
  52. Sleep(10);
  53. }
  54. else if (!( (dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '\0') ||(dati_file.cFileName[0] == '.' && dati_file.cFileName[1] == '.' && dati_file.cFileName[2] == '\0') ) )
  55. fprintf(log,"FILE %s%s\n",cartella,dati_file.cFileName);
  56.  
  57. }
  58.  
  59. fclose(log);
  60. }
Versione sito: 1.03.01 by mamo139. - Tutti i sorgenti presenti su questo sito sono rilasciati sotto licenza "GNU GPL version 3".