小弟现在在开发基于文件存储形式的程序,为了便于备份和恢复,存储的文件条目不做记录,所以在遍历的时候只有在每个文件夹中找出所有文件再根据文件类型进行处理,请问在Delphi中怎样实现这样的遍历操作?最好有点源程序,谢谢!
var
sr: TSearchRec;
begin
try
if FindFirst(sDir + *.RED, faAnyFile and not faDirectory, sr) = 0 then begin
repeat
//你的操作 (sDir + sr.Name)就是当前找到的文件名
until FindNext(sr) <> 0;
FindClose(sr);
end
except
end;
end;
递归实现删除某一目录下所有文件
var Form1: TForm1;
rec_stack:array [1..30] of TSearchRec;
rec_pointer:integer;
Del_Flag:Boolean;
------------------------------------------------------------------ ------
procedure TForm1.DeleteTree(s:string);
VAR searchRec:TSearchRec;
begin
if FindFirst(s+\*.*, faAnyFile, SearchRec)=0 then
repeat
if (SearchRec.Name<>.) and (SearchRec.Name<>..) then
begin
if (SearchRec.Attr and faDirectory>0) then
begin
rec_stack[rec_pointer]:=SearchRec;
rec_pointer:=rec_pointer-1;
DeleteTree(s+\+SearchRec.Name);
rec_pointer:=rec_pointer+1;
SearchRec:=rec_stack[rec_pointer];
end
else
begin
try
FileSetAttr(s+\+SearchRec.Name,faArchive);
DeleteFile(s+\+SearchRec.Name);
except
Application.MessageBox(PChar(Delete File:+s+\+SearchRec.Name+ Error!),Info,MB_OK);
Del_Flag:=False;
end;
end;
end;
until (FindNext(SearchRec)<>0);
FindClose(SearchRec);
if rec_pointer<30 then
begin
try
FileSetAttr(s,faArchive);
RemoveDir(s);
except
Application.MessageBox(PChar(Delete Directory:+s+ Error!),Info,MB_OK);
Del_Flag:=False;
end;
end;
end;
---------------------------------------------------------
Del_Flag:=True;
rec_pointer:=30;
DeleteTree(c:\temp);
if Del_Flag then Application.MessageBox(PChar(目录c:\temp的内容已成功清除!),信息,MB_OK);
if FindFirst(sDir + *.RED, faAnyFile and not faDirectory, sr) = 0 then
改为if FindFirst(sDir + *.*, faAnyFile and faDirectory, sr) = 0 then
遍历所有文件