English
HOME | PROJECTS | C++ CLASSES | c\c++ source code | Gallery | Guestbook | BW Servers | Contact me | Login

<< File list >>

visits: 1525


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. }
Website version: 1.03.01 by mamo139. - All the source codes are intended to be released under "GNU GPL version 3".