| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1214 人关注过本帖
标题: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
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:5 
adir()的数组超载了
2022-09-14 14:58
sych
Rank: 4
等 级:业余侠客
威 望:7
帖 子:235
专家分:286
注 册: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
帖 子:283
专家分:616
注 册:2012-9-21
收藏
得分:5 
杀鸡焉牛刀,WINDOWS 自带的DIR 输出到文件,再导入DBF表 就很好用,对于有特殊字符的 其它方式容易丢失或被忽略
2022-09-14 22:02
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:283
专家分:616
注 册:2012-9-21
收藏
得分:0 
RUN dir /B /s c:\*.* > temp.txt   枚举 目录及文件名,还有好多参数,可以查看一下
2022-09-14 22:12
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11771
专家分:43421
注 册:2006-5-13
收藏
得分:5 
化整为零就容易处理了。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2022-09-15 09:10
快速回复:VFP 如何依次读出文件夹中(文件夹下有几十万个上百万个文件)每个文件 ...
数据加载中...
 
   



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

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