[C++] comment faire pour lister un dossier ?

comment faire pour lister un dossier ? [C++] - Programmation

Marsh Posté le 24-08-2001 à 12:45:40    

je voudrais une instruction qui soit capable de me recenser touts les fichiers et sous-dossiers contenus dans un dossier, afin de les stocker dans un tableau par exemple, ou de les afficher à l'écran, comme si on avait tapé "dir"...
pour l'instant j'ai fait un truc de barbare qui marche certes mais qui est super lent et méga lourd : le pgm génère tous les noms possibles de fichiers et sous-dossiers, essaye d'y accéder, et retourne une valeur ki me dit si ca existe ou pas..... vous avez compris le bourinage par excellence....
MEECI DE M'AIDER.......

Reply

Marsh Posté le 24-08-2001 à 12:45:40   

Reply

Marsh Posté le 24-08-2001 à 13:48:31    

Oui va voir du côté des fonctions FindFirstFile() FindNextFile() :)


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
Reply

Marsh Posté le 24-08-2001 à 14:24:02    

H4dd3R a raison!!! :jap:  
C relatif aux fichiers, donc va voir la doc les concernant.
Je connaissais pas avt (je suis pas du tt 1 pro de la prog win), ms avec l'aide, j'ai fait ça en 5 min:
 
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <dos.h>
 
main() {
 HANDLE fich;
   WIN32_FIND_DATA fichinfo;
   int i=0;
 
 fich = FindFirstFile("*",&fichinfo);
   cout << "\nFichier " << i << " : " << fichinfo.cFileName;
 
   while (true) {
    i++;
    if (!FindNextFile(fich,&fichinfo)) break;
      cout << "\nFichier " << i << " : " << fichinfo.cFileName;
   }
 
   FindClose(fich);
 
 getchar();
}
 
 
Bonne lecture!!!
 
PS: ce prog liste le repertoire courant; si tu veux en lister 1 autre, fo changer de repertoire courant via  une API dont je me souviens plus du nom (surement 1 truc du genre ChangeCurrentDirectory)

 

[edtdd]--Message édité par electricblue--[/edtdd]

Reply

Marsh Posté le 24-08-2001 à 16:15:53    

Non FindFirstFile accepte direct en paramêtre le répertoire voulu si je me souviens bien..
 
Mais va voir la doc c vraiment pas dûr.. :)

Reply

Marsh Posté le 24-08-2001 à 18:11:00    

Merci beaucoup c vraiment sympa...c vrai ke c simple...
mais par contre pour lister les sous-repertoires je n'ai pas trouvé une fonction comme FindFirstDirectory et FindNextDirectory......

Reply

Marsh Posté le 24-08-2001 à 18:35:55    

Oui c vrai.. Comme j´ai jamais eu besoin de le faire désolé je sais pas.. :)

Reply

Marsh Posté le 24-08-2001 à 18:50:36    

Pr les sous-rep, ya 1 champ ds la structure WIN32_FIND_DATA qui te dit si c 1 rep ou pas.
Va voir la doc "win32.hlp" pr plus de détail.

Reply

Marsh Posté le 26-08-2001 à 23:51:09    

sauf que ca c'est un poil mieux ;)
 
int scan (void)
{
BOOL encore=TRUE;
int ret=0;
 
CFileFind find;
encore=find.FindFile();
 
while (encore)
{  
  encore=find.FindNextFile();
  if (!find.IsDots())
    if (find.IsDirectory())
    {
      _chdir ( LPCTSTR(find.GetFilePath()));
      scan ();
      _chdir (".." );
    }
    else
    {
      cout<<find.GetFilePath()<<endl;
    }
}  
return 0;
}

Reply

Marsh Posté le 27-08-2001 à 09:44:28    

aqwsezsxdr > surement, j'en sais rien en fait...
Sinon, vu que t'as l'r de t'y connaitre, tu pourrai pas jeter 1 coup d'oeil à mon topic sur les interruption?? Je le up rien que pr toi!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed