标题:VFP 如何依次读出文件夹中(文件夹下有几十万个上百万个文件)每个文件
只看楼主
wangjianhai
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-9-13
结帖率:0
已结贴  问题点数:20 回复次数:5 
VFP 如何依次读出文件夹中(文件夹下有几十万个上百万个文件)每个文件
设备机器指定文件夹中有几十万到百万个文本文件
利用VFP 如何依次读出文件夹中每个文件 adir()函数超过1万多文件就报错了 ,请教各位高手指点!
搜索更多相关主题的帖子: VFP 读出 依次 文件 文件夹 
2022-09-14 13:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
adir()的数组超载了
2022-09-14 14:58
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:5 
百万个?win也崩吧
LPARAMETERS lcpath
DECLARE INTEGER FindFirstFile IN kernel32 STRING lpFileName,STRING @ lpFindFileData
DECLARE INTEGER FindNextFile IN kernel32 INTEGER hFindFile,STRING @ lpFindFileData
DECLARE INTEGER FindClose IN kernel32 INTEGER hFindFile
local cFilename,cFindBuffer,hFind,lnAttr,hCountF,hCountD,nRecn
lcPath=ADDBS(ALLTRIM(lcpath))
IF DIRECTORY(lcpath)
    cFindBuffer = Repli(Chr(0),318)
    hCountD=1
    LOCAL hDIRECT(1)
    hDIRECT[1]=""
    hCountF=0
    nRecn=0
    DO WHIL nRecn<hCountD
        nRecn=nRecn+1
        hFind = FindFirstFile(lcpath+hDIRECT(nRecn) + "*.*", @cFindBuffer)
        IF hFind = -1
            loop
        ELSE
            lnAttr = ctobin(SUBSTR(cFindBuffer, 1,4),'4rs')
            cFilename = SUBSTR(cFindBuffer, 45,260)
            cFilename = Left(cFilename, AT(Chr(0),cFilename)-1)
        ENDIF
        DO WHILE .T.
            IF BITand(lnAttr,16) =16
                IF Not (LEFT(cFilename,1)="."  or AT('RECYCLER',UPPER(cfilename))>0)
                    hCountD=hCountD+1
                    local hDIRECT[hCountD]
                    hDIRECT[hCountD]=hDIRECT(nRecn)+cFilename+'\'
                ENDIF
            ELSE
*                ?hDIRECT(nRecn)+cFilename
            ENDIF
            IF FindNextFile(hFind, @cFindBuffer) = 0
                EXIT
            ELSE
                lnAttr = ctobin(SUBSTR(cFindBuffer, 1,4),'4rs')
                cFilename = SUBSTR(cFindBuffer, 45,260)
                cFilename = Left(cFilename, AT(Chr(0),cFilename)-1)
            ENDIF
        ENDDO
        FindClose(hFind)
    ENDDO
else
    hCountD=0
    hCountF=1
    local hFile[1]
    hFile[1]=lcpath
endif
RETURN
2022-09-14 15:59
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:5 
杀鸡焉牛刀,WINDOWS 自带的DIR 输出到文件,再导入DBF表 就很好用,对于有特殊字符的 其它方式容易丢失或被忽略
2022-09-14 22:02
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
RUN dir /B /s c:\*.* > temp.txt   枚举 目录及文件名,还有好多参数,可以查看一下
2022-09-14 22:12
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:5 
化整为零就容易处理了。

活到老,学到老! http://www. E-mail:hu-jj@
2022-09-15 09:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510030-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.199946 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved