2008年11月20日 星期四 [路日] [旧版首页]
我不介意你恨我啵一个一首歌真爱地图相反词来跳舞吧
爱在现实面前雨霖铃树叶的崇拜日不落完美故事冰冰
快乐童话嘟嘟娃娃路太弯差一点让我看着你客串情人
当前位置:首页 >> VFP专区 >> 对于目录以及子目录下文件的替换实现
在线连续剧免费播放:     五星大饭店     奋斗     血色浪漫     家有儿女     荣归     大明天子     连城诀    

对于目录以及子目录下文件的替换实现

作者:  发布时间:2005-03-18 >>  -收藏本页-

  在日常工作中,经常用到对某个目录下文件中字符串替换的功能。如果对一个目录进行替换,实现上是很简单,但是对于子目录也要进行替换,那就麻烦一些了。以下是两个实现的方式。
1、采用com控件
function toReplaceDirString
lparameters tcFromDir, tcFind, tcReplace, lcExt
*? tcFromDir
if parameters() < 3
wait window 'Parameters Error!'
return
endif

set safety off
activate screen
if !directory(tcFromDir)
wait window tcFromDir + ' not existed!'
return .f.
endif

Local lcFromDir
lcFromDir = addbs(tcFromDir)
if vartype(lcExt)#'C'
lcExt = '*.*'
endif

clea
if !((upper('_utility'))$(set('CLASS')))
set CLASSLIB TO ('_utility') ADDI
endif

local loFile
loFile = createobject('_filer')
loFile.cFileExpression = lcExt
loFile.cSearchPath = lcFromDir
loFile.find()

*? vartype(loFile.oFiles)
if isNull(loFile.oFiles)
wait window 'file is null'
return .t.
endif

Local lni, laTemp
for lni = 1 to loFile.oFiles.count
if int(loFile.oFiles.item(lni).LastWriteTime) = date() - date(1899,12,30)
if loFile.oFiles.item(lni).Attr = 32
*!*拷贝文件
lcFromFile = loFile.oFiles.item(lni).Path + loFile.oFiles.item(lni).name
if file(lcFromFile)
lcText = filetostr(lcFromFile)
lcText = strtran(lcText, tcFind, tcReplace)
=strtofile(lcText, lcFromFile)
wait window 'ok replace file ' + lcFromFile nowait
endif
endif
endif
endfor

return .t.
endfunc
这种实现利用了微软的com控件,实现简单。
2、自己编程实现
****************************************
*功能说明:
*替换目录以及子目录下的文件的字符串。
*
*参数说明:
*lcDir 替换的根目录
*lcFind 查找字符串
*lcReplace 替换字符串
*lcExt 扩展名
*
*日期:2001.10.08
*作者:天涯闲人
*
*修改记录:
****************************************
function to_replacedirstring
lparameters lcDir, lcFind, lcReplace, lcExt
if parameters() # 4
wait window 'Parameters Error!'
return
endif

set safety off
if !directory(lcDir)
wait window lcDir + ' not existed!'
return .f.
endif

local lnFile, lni, lnDir, lnj
local array laDirs(1,1)
local array laFiles(1,1)
Local lcFromFile, lcText, lcEndDir
lnFile = adir(laFiles, addbs(lcDir) + lcExt)
lcEndDir = addbs(lcDir)

for lnj = 1 to lnFile
*!*在这里进行替换操作,当然,其中要求不能够是目录文件
*if !('D'$laFiles[lnj, 5])&&是文件
if (laFiles[lnj, 3] = date())&&只更新当天生成的文件
lcFromFile = lcEndDir + laFiles[lnj, 1]
if file(lcFromFile)
lcText = filetostr(lcFromFile)
lcText = strtran(lcText, lcFind, lcReplace)
=strtofile(lcText, lcFromFile)
wait window 'ok replace dir ' + lcFromFile nowait
endif
endif
*endif
endfor

lnDir = adir(laDirs, addbs(lcDir) + '*.*', 'D')
for lni = 1 to lnDir
if ('D'$laDirs[lni, 5] and !('.'$laDirs[lni, 1]))
=to_replacedirstring(addbs(lcDir) + laDirs[lni, 1], lcFind, lcReplace, lcExt)
endif
endfor
endfunc
以上两种实现方式中,对于效率而言,经测试,第二种明显快于第一种方式。

·本文总评分:0 分 给此网页评分:
·推荐给好友或网友
网址: UBB代码:
我也说两句……  
用户名: 密码: 匿名发表 登陆 注册
图 像:
·请您对您的言行负责,遵守中华人民共和国有关法律、法规,尊重网上道德;
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任;
·留言板管理人员有权保留或删除其管辖留言中的任意内容。
标题
关键字:音乐欣赏 益智游戏 开口一笑 网站建设 JAVASCRIPT VFP开发 常用下载 哲理小故事
除特别说明,本站点所有内容和作品都按照创作共用方式授权
本站点及发布平台统一使用 eaccelerator 优化,特此感谢。
联系站长 天外闲人 版权所有 琼ICP备05003420号 QQ群:39137597
[访问计数: 1736350]