[C++] Alleen directory's vinden met CFileFind

Pagina: 1
Acties:

  • Riesjard
  • Registratie: April 2003
  • Niet online
Ik heb nu het volgende:
code:
1
2
CFileFind dirFinder;
BOOL bDirsFound = dirFinder.FindFile(strSearchDir +  _T("\\*.*"));

*.* resulteerd dus in alle bestanden en mappen.
later wordt er zo of gechekt het een directory of niet is:
code:
1
2
if (dirFinder.IsDirectory() )
...


Nu werkt het allemaal wel maar het zou veel sneller kunnen als ik van _T("\\*.*") iets zou kunnen maken waardoor alleen directory's gevonden worden.

(het progje moet over een 10mbit netwerk draaien en het gaat om echt heel veel bestanden en mappen anders had het me niet veel uitgemaakt)

Heeft iemand suggesties?

  • The End
  • Registratie: Maart 2000
  • Nu online

The End

!Beginning

Kan hiermee niet. Volgens mij kan het wel met 'FindFirstFileEx'.
Bij de parameter 'fSearchOp' kan je opgeven dat hij alleen naar directories moet zoeken (Als het filesystem dat ondersteund?) met 'FindExSearchLimitToDirectories'.

edit:

Over het hoofd gezien: 'MatchesMask' is een functie van CFileFind die het ook zou kunnen.

[ Voor 26% gewijzigd door The End op 20-02-2004 10:55 ]


  • Riesjard
  • Registratie: April 2003
  • Niet online
Het kan idd ook wel met MatchesMask maar

code:
1
if ( finder.MatchesMask(FILE_ATTRIBUTE_DIRECTORY) )

is eigenlijk hetzelde als
code:
1
if ( Finder.IsDirectory()  )

en zo moet ik nog alle bestanden en mappen af om dit te checken.

Ik denk dat het niet anders kan :(

  • The End
  • Registratie: Maart 2000
  • Nu online

The End

!Beginning

Riesjard schreef op 20 februari 2004 @ 11:02:
Het kan idd ook wel met MatchesMask maar

code:
1
if ( finder.MatchesMask(FILE_ATTRIBUTE_DIRECTORY) )

is eigenlijk hetzelde als
code:
1
if ( Finder.IsDirectory()  )

en zo moet ik nog alle bestanden en mappen af om dit te checken.

Ik denk dat het niet anders kan :(
Jawel, met 'FindFirstFileEx' Daar kan je het searchmask opgeven voordat je gaat zoeken.