Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Recursive function for directory read
Message
De
02/05/2001 17:34:12
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00502783
Message ID:
00502789
Vues:
26
>Has anyone written or know where to find a function to capture folder and file details? I don't think there's a need to reinvent the wheel...
>
>Thanks!!!


Gil,
Below is the code I have:


**/ Recursive code for dirs

********************************************************************************
* Description.......: GetAllFiles1 - builds list of all files in directory tree
* : uses Adir recursive call
* Calling Samples...:
* Parameter List....: tcStartDir, tcFileExt
* Created by........: David Frankenbach
* Modified by.......:
********************************************************************************
* ADIR() method of recursively building the file list - Dave Frankenbach
lparameters tcStartDir, tcFileExt
* tcStartDir - top directory to start from
* tcFileExt - only files with this extension would be added to the list,
* leave blank for all file extensions

* Both parameters should be character type, check it first
**************************************************************************
if empty(tcStartDir) or vartype(tcStartDir)<'C'
tcStartDir='c:\' && Get list of files in the whole local drive
else
tcStartDir=addbs(tcStartDir)
endif
if empty(tcFileExt) or vartype(tcFileExt)<'C'
tcFileExt=''
endif

local ltStart
ltStart = datetime()
local lnTotNumberOfFiles

create cursor curFilesADIR (cFilename c(100), nSize n(10), dMod d, Flag L)
=RecurseFolder(tcStartDir, tcFileExt) && Call recursive procedure
lnTotNumberOfFiles=reccount(curFilesAdir)
? datetime() - ltStart, lnTotNumberOfFiles

index on upper(justfname(cFileName)) tag cFileName
browse nowait

function RecurseFolder
lparameters lcDir, lcFileExt
local i , n, laFiles[1]

n = adir(laFiles, lcDir + '*.*', "shd" )

for i = 1 to n
if ( left( laFiles[i,1], 1 ) != '.' )
if ( "D" $ laFiles[i,5] )
RecurseFolder( lcDir + laFiles[i,1] + "\" )
else
if empty(lcFileExt) or justext(laFiles[i,1])==lcFileExt
llFlag=.f.
insert into filesADIR ;
values( lcDir + laFiles[i,1], laFiles[i,2], laFiles[i,3],llFlag )
endif
endif
endif
endfor
return
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform