回 帖 发 新 帖 刷新版面

主题:文件夹操作~

怎么才能读取某个目录下所有文件夹的名称

回复列表 (共2个回复)

沙发

我的是读取文件夹和文件,你可修改或从创建的dir_file表用下面语句
select distinct 文件目录 from dir_file order by 文件目录 into table 文件目录

******************
current_dir=GETDIR()
CLOSE ALL
CLEAR
IF FILE('dir_file.dbf')
   DELETE FILE dir_file.dbf
ENDIF   
CREATE TABLE dir_file FREE (文件名 c(50), 文件目录 c(100))
DO searfile WITH current_dir
SELECT dir_file
BROWSE  

PROCEDURE  searfile
PARAMETERS  current_dir
LOCAL  i,cur_dir,tempdir,file1(1,1)
    IF VARTYPE(current_dir)="C"
      chdir(current_dir)
      ELSE
       RETURN
    ENDIF  
  =adir(file1,"*.*","AD") &&&&将该目录下的所有文件保存到数组file1中
    cur_dir=CURDIR() &&&&保存当前目录

    FOR  i=1 to ALEN(FILE1,1)
    *若遇到一个子目录时则进行递归调用
   IF  ALLTRIM(file1[i,1])!="." AND  ALLTRIM(file1[i,1])!=".." AND  AT("D",file1[i,5])>0
       IF   RIGHT(RTRIM(cur_dir),1)=""
            tempdir=cur_dir+file1(i,1)
       ELSE  
        tempdir=cur_dir+""+file1(i,1)
       ENDIF  
       IF AT("D",file1[i,5])>0 AND VARTYPE(current_dir)="C"
         searfile(tempdir)
       ENDIF   
   ELSE
      chdir(cur_dir)  &&回退到父目录      
      IF  AT("D",file1[i,5])=0 AND ALLTRIM(file1[i,1])!="." AND  ALLTRIM(file1[i,1])!=".."
          cFileName=file1(i,1)
          cFilePath=cur_dir
          INSERT  INTO dir_file values (cFileName,cFilePath)
      ENDIF
   ENDIF
ENDFOR    
ENDPROC

板凳

好帖,收益非浅

我来回复

您尚未登录,请登录后再回复。点此登录或注册