问题描述:
现需读取目录:“c:\history data”文件夹中所有文件(该文件夹中,只包含.txt和.done文件),需对每个文件进行处理。
另,求将文件转换目录的函数(比如将c:\history data的文件转移到d:\history中)
解析:
procedure FileSearch(PathName:string)
var
F : TSearchRec
Found : Boolean
begin
ChDir(PathName)
Found := (FindFirst('*.*', faAnyFile, F) = 0)
while Found do
begin
if (F.Name = '.') or (F.Name = '..') then
begin
Found := (FindNext(F) = 0)
Continue
end
if (F.Attr and faDirectory)>0 then
begin
Application.ProcessMessages
FileSearch(F.Name)
end
插入你的代码,F.Name就是文件名,GetCurrentDir可以得到当前目录
Found := (FindNext(F) = 0)
end
FindClose(F)
ChDir('..\')
end
转换目录可以用MoveFile,查一下帮助
一个button,一个listboxprocedure TForm1.Button1Click(Sender: TObject)
const
DIRATTR = DDL_READWRITE or DDL_READONLY or DDL_HIDDEN or DDL_SYSTEM or
DDL_ARCHIVE or DDL_DIRECTORY {or DDL_DRIVES}
sPath = 'e:\' //目录可以自己定义为动态参数
var
Files : string
begin
Files := '*.*' //查找文件类型
SetCurrentDirectory(sPath)
SendMessage(Listbox1.Handle, LB_DIR, DIRATTR, LParam(Files))
end
1、使用FindFirst函数和FindNext函数就可以查找出文件夹内所有的文件名,编写如下一个函数:
function searchfile(path:string):TStringList
var SearchRec:TSearchRec
found:integer
list:TStringList
begin
list:=TStringList.Create
found:=FindFirst(path+'\*.*',faAnyFile,SearchRec)
while found=0 do
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') and (SearchRec.Attr<>faDirectory)
then List.Add(SearchRec.Name)
found:=FindNext(SearchRec)
end
FindClose(SearchRec)
searchfile:=list
end
2、使用searchfile(要查找的路径),就可以得到所有文件名,如下示例:
procedure TForm1.btn1Click(Sender: TObject)
begin
mmo1.Lines.AddStrings(searchfile('G:\BaiDu\baidu_code\bigimg'))
end
效果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)