精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖编程技巧〗>>Re:如何取得整个硬盘中的目录结构(不使用API)?

主题:Re:如何取得整个硬盘中的目录结构(不使用API)?
发信人: hunter__fox(雁回西楼)
整理人: hunter__fox(2002-03-16 20:55:57), 站内信件
【 在 bu_bu 的大作中提到:】
:如题.
:......
以下不知是不是你想要的?

Create Cursor DirInfo(ID I Not Null Unique,;
                      Parent I Null,;
                      Name M Not Null,;
                      Size I Null,;
                      DateTime T Null,;
                      Attrib C(5) Null)
Insert Into DirInfo Values(1,.Null.,"C:",.Null.,.Null.,.Null.)
SeleFile("DirInfo",1)
&& -------------------------------------------------------------------
&& 此函数运行条件为:
&&    cAlias 所指向的表格式同 DirInfo 表一致
&&    cAlias 所指向的表可写
&&    nRec 所指记录必须是一个目录
&&    nRec 通过 Parent==>ID 方式可回溯至根目录
&&    日期、时间的格式可通过 DTOC()、CTOT()、TTOC() 函数
Function SeleFile(cAlias,nRec)
  Go nRec In (cAlias)
  If At("D",(cAlias + ".Attrib")) > 0 && 若是一个目录
     Local iParent
     iParent = Evaluate(cAlias + ".ID")
     && 取得新目录路径
     Local cNewDir
     cNewDir = Alltrim(Evaluate(cAlias + ".Name"))
     Do While Not IsNull(Evaluate(cAlias + ".Parent")) && 根目录没有上层目录
       IndexSeek(Evaluate(cAlias + ".Parent"),.T.,cAlias,"ID")
       cNewDir = Alltrim(Evaluate(cAlias + ".Name")) + "\" + cNewDir
     EndDo
     Local aDirInfo[1],n
     aDir(aDirInfo,cNewDir + "\*.*","ASDHR")
     For n = 1 To aLen(aDirInfo,1) && 逐条处理
       If Not (aDirInfo[n,1] == "." Or aDirInfo[n,1] == "..") && 父目录和本目录除外
         && 加入表中
         Insert Into (cAlias) ;
             Values (RecCount(cAlias)+1,;
                     iParent,;
                     Alltrim(aDirInfo[n,1]),;
                     aDirInfo[n,2],;
                     CToT(DToC(aDirInfo[n,3])+" "+aDirInfo[1,4]),;
                     aDirInfo[n,5])
         && 若是目录则递归调用
         If At("D",aDirInfo[n,5]) > 0
           SeleFile(cAlias,RecCount(cAlias))
         EndIf
       EndIf
    EndFor
  EndIf
EndFunc



----
在代码天地里
我要做一个
猎狐者  

[关闭][返回]