delphi中,如何读取一个目录中的所有文件?在线等……

delphi中,如何读取一个目录中的所有文件?在线等……,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

现需读取目录:“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,一个listbox

procedure 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

效果如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11466752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存