|
在VFP中如何历遍所有文件夹和文件
出处:网络
在VFP中,能象一些杀毒软件那样,找遍磁盘的所有文件夹和文件吗?
答案是肯定的,而且很简单:
*利用VFP的Create Cursor -SQL命令建立有5个字段的临时库
*结合前面提到的ADIR()函数便可完成。
下面是具体代码:
dqml='C:' &&需扫描的盘符
use
Create Cursor mylsdbf (wjmc c(120),wjcd n(10),wjrq d,wjshj c(10),wjsx
c(6))
xGS=1
xCD=0
append BLANK
REPL wjmc WITH dqml
do while !eof()
nRecn=Recn()
dqml=allt(wjmc)+'\'
x=adir(Mysz,(dqml+'*.*'),'rashd')
if x<>0
for I=3 to x
Mysz(I,1)=dqml+Mysz(I,1)
xGS=xGS+1
xCD=xCD+Mysz(I,2)
endf
append from array Mysz for allt(wjmc)<>'.' AND allt(wjmc)<>'..'
and 'D'$wjsx
endi
go nRecn
skip
endd
use
在VFP如何利用低级文件操作函数读取*.INI文件
VFP为我们提供了16个低级文件操作函数,充分利用这些函数,几乎可对所有文件进行本来只有汇编、C等语言才能进行的操作。
*.INI文件其实也是ASCII码文本文件,只不过有其特定的规律而已。
下面以读取system.INI中[boot.description]关键字里的mouse.drv标识符中的值为例来说明:
nPath_ls=fullpath('command.com',2)
nPath=strtran(nPath_ls,'COMMAND.COM','system\') &&取得Windows\system\的目录名
dkwjm=nPath+'system.ini' &&需打开文件的路径和文件名
Fp=Foren(dkwjm,0) &&以只读(默认方式0可以不用)打开文件
if Fp<0
wait wind '打不开您指定的文件'
retu
endi
do while !Feof(Fp)
wjnr=Fgets(Fp) &&从打开的文件中读取一行
if atc('mouse.drv',wjnr)=1
exit
endi
endd
=Fclose(Fp) &&关闭打开的文件
x=atc('=',wjnr)
nQdz=iif(x>1,suns(wjnr,x+1),'') &&nQdz='标准鼠标'字符串
retu
我只不过是说明如何运用VFP提供的这些函数,至于如何建立和改写文件,为何用Fgets()来读取数据而不用Fread()来读取数据等,可以查阅VFP帮助。VFP3.0的帮助是一本很好的中文教科书。
如何改变文件的最后修改日期和时间
在WINDOW 9X下我们没办法来改变一个文件的日期和时间,那在VFP能办到吗?
在WINDOW 9X下文件的日期和时间有创建、修改和访问三种,在通常情况下我们所说的文件日期和时间指的是修改这一项。
那在VFP下如何改文件日期和时间呢:
Fp=Foren('需打开的文件',2) &&以读写方式打开文件
if Fp<0
wait wind '打不开您指定的文件'
retu
endi
wjnr=Fread(fp,1) &&从打开的文件头中读一个字节到wjnr
=Fseek(Fp,0,0) &&将文件指针移到文件头(回到原来的位置)
=Fwrite(Fp,wjnr,1) &&向打开的文件头中写入一个字节
=Fclose(Fp) &&关闭打开的文件
即把读取的那个字节原封不动的再写入文件,从而达到了将当前系统
的日期和时间来改写文件的日期和时间目的。
我所写出的代码可能不是最合理和最精练的,只是提出一种思路或方法
供大家参考,希望能对您有所帮助。
江苏 常州 老王 99.09.07
E-mail:cfyns@163.net
[返回] |