这是一个搜寻指定目录下所有文件及下级子目录下所有文件的过程,希望对你有用处。 procedure Tform1.selectfile(directory:string); var search:tsearchrec; begin movielist.Cursor:=crhourglass; if length(directory)>0 then begin if directory[length(directory)]<>'\' then directory:=directory+'\'; //如果路径名后面没有'\'则给路径名加上'\' if findfirst(directory+'*.*',faanyfile,search)=0 then repeat//循环读取目录下的文件 if (search.attr and fadirectory>0) then//如果是目录的话则进行递归调用 begin if (search.name<>'.') and (search.name<>'..') then //如果文件名不为'.' 和'..' begin selectfile(directory+search.name);//递归调用搜寻子目录 end; end else//如果当前目录下面没有子目录,就将文件保存到listview中去 if (search.name<>'.') then if (search.name<>'..') then if checkfilename(search.name)=true then setlistview(directory+search.name); //如果不为子目录,并且经过了文件检查则增加这个文件 until findnext(search)<>0; findclose(search); movielist.Cursor:=crarrow; end; end;
比如找c:\my.text这个文件:)function IsFileExist : boolean; var hFindFile:THANDLE; findStruct:TWIN32FindData; begin hFindFile := FindFirstFile('c:\my.txt',findStruct); if hFindFile == INVALID_HANDLE_VALUE then Result := false; else Result := true; FindClose(hFindFile); end;
procedure Tform1.selectfile(directory:string);
var
search:tsearchrec;
begin
movielist.Cursor:=crhourglass;
if length(directory)>0 then
begin
if directory[length(directory)]<>'\' then
directory:=directory+'\'; //如果路径名后面没有'\'则给路径名加上'\'
if findfirst(directory+'*.*',faanyfile,search)=0 then
repeat//循环读取目录下的文件
if (search.attr and fadirectory>0) then//如果是目录的话则进行递归调用
begin
if (search.name<>'.') and (search.name<>'..') then
//如果文件名不为'.' 和'..'
begin
selectfile(directory+search.name);//递归调用搜寻子目录
end;
end
else//如果当前目录下面没有子目录,就将文件保存到listview中去
if (search.name<>'.') then if (search.name<>'..') then
if checkfilename(search.name)=true then
setlistview(directory+search.name);
//如果不为子目录,并且经过了文件检查则增加这个文件
until findnext(search)<>0;
findclose(search);
movielist.Cursor:=crarrow;
end;
end;
var
hFindFile:THANDLE;
findStruct:TWIN32FindData;
begin
hFindFile := FindFirstFile('c:\my.txt',findStruct);
if hFindFile == INVALID_HANDLE_VALUE then
Result := false;
else Result := true;
FindClose(hFindFile);
end;
directory是路径信息
movielist是一个TListView控件。
会报错,Access File Error 水能帮我分析一下问题出在那边??
如果仅搜索单个目录时就没有关系!
有什么解决办法吗??各位大侠