(A)指定文件查找
function TForm1.findSpecFile(sDirectory,fName:string):boolean;
var sr: TSearchRec ;
begin
if FindFirst(sDirectory+fName, faAnyFile, sr) = 0 then
begin
FindClose(sr);
result:=true;
end else begin
result:=false;
end;
end;
(B)文件名包含查找
procedure TForm1.findLikeFile(sDirectory,likeName:string);
var sr: TSearchRec;
begin
if FindFirst(sDirectory+\'*.*\', faAnyFile, sr) = 0 then
begin
repeat
if pos(likeName,lowercase(sr.Name))>0 then begin
if (sr.Attr and faDirectory)=0 then
ListBox1.Items.Add(\'文件:\'+sDirectory+sr.Name)
else
ListBox1.Items.Add(\'目录:\'+sDirectory+sr.Name) ;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
////////////////////////////////////////////////////////////////////////////
(1)查找指定扩展名的文件
procedure TForm1.Button1Click(Sender: TObject);
var sr: TSearchRec;
begin
ListBox1.Items.Clear ;
if FindFirst(\'D:\work\*.xls\', faAnyFile, sr) = 0 then
begin
repeat
if pos(\'.xls\',lowercase(sr.Name))>0 then
ListBox1.Items.Add(sr.Name) ;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
或
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear ;
findLikeFile(\'D:\work\\',\'xls\');
end;
(2)查找某目录下的所有文件,非目录
procedure TForm1.Button2Click(Sender: TObject);
var sr: TSearchRec;
begin
ListBox1.Items.Clear ;
if FindFirst(\'D:\work\*.*\', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory)=0 then
ListBox1.Items.Add(sr.Name+ \' \'+intToStr(sr.Attr)) ;
until FindNext(sr) <> 0;
FindClose(sr);
end;
showMessage(intToStr(ListBox1.Items.count));
end;
(3)查找某目录下的所有目录,包含 “.” “..”
procedure TForm1.Button2Click(Sender: TObject);
var sr: TSearchRec;
begin
ListBox1.Items.Clear ;
if FindFirst(\'D:\work\*.*\', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory)<>0 then
ListBox1.Items.Add(sr.Name+ \' \'+intToStr(sr.Attr)) ;
until FindNext(sr) <> 0;
FindClose(sr);
end;
showMessage(intToStr(ListBox1.Items.count));
end;
(4)查找某目录下的指定文件,包含子目录
procedure TForm1.Button1Click(Sender: TObject);
//逐层目录第归
procedure findSubDir(parentDir:string);
var sr: TSearchRec; sDir:string;
begin
//(1)查找当前目录
StatusBar1.SimpleText := parentDir;
findSpecFile(parentDir,\'test.txt\'); //(A)指定文件查找
//findLikeFile(parentDir,\'test\'); //(B)文件名包含查找
//(2)第归查找子目录
if FindFirst(parentDir+\'*.*\', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Name=\'..\')or(sr.Name=\'.\') then continue;
if (sr.Attr and faDirectory)<>0 then
begin
sDir:=parentDir+sr.Name+\'\\';
findSubDir(sDir); //逐层第归
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
var
sr: TSearchRec; sDir:string;
begin
Screen.Cursor := crHourGlass;
ListBox1.Items.Clear ;
try
sDir:=\'D:\back\\'; //初始目录
findSubDir(sDir);
if ListBox1.Items.Count >0 then
StatusBar1.SimpleText :=\'共找到个\'+intToStr(ListBox1.Items.Count)+\'文件\'
else
StatusBar1.SimpleText :=\'没有找到文件\';
finally
Screen.Cursor := crDefault;
end;
end;
function TForm1.findSpecFile(sDirectory,fName:string):boolean;
var sr: TSearchRec ;
begin
if FindFirst(sDirectory+fName, faAnyFile, sr) = 0 then
begin
FindClose(sr);
result:=true;
end else begin
result:=false;
end;
end;
(B)文件名包含查找
procedure TForm1.findLikeFile(sDirectory,likeName:string);
var sr: TSearchRec;
begin
if FindFirst(sDirectory+\'*.*\', faAnyFile, sr) = 0 then
begin
repeat
if pos(likeName,lowercase(sr.Name))>0 then begin
if (sr.Attr and faDirectory)=0 then
ListBox1.Items.Add(\'文件:\'+sDirectory+sr.Name)
else
ListBox1.Items.Add(\'目录:\'+sDirectory+sr.Name) ;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
////////////////////////////////////////////////////////////////////////////
(1)查找指定扩展名的文件
procedure TForm1.Button1Click(Sender: TObject);
var sr: TSearchRec;
begin
ListBox1.Items.Clear ;
if FindFirst(\'D:\work\*.xls\', faAnyFile, sr) = 0 then
begin
repeat
if pos(\'.xls\',lowercase(sr.Name))>0 then
ListBox1.Items.Add(sr.Name) ;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
或
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear ;
findLikeFile(\'D:\work\\',\'xls\');
end;
(2)查找某目录下的所有文件,非目录
procedure TForm1.Button2Click(Sender: TObject);
var sr: TSearchRec;
begin
ListBox1.Items.Clear ;
if FindFirst(\'D:\work\*.*\', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory)=0 then
ListBox1.Items.Add(sr.Name+ \' \'+intToStr(sr.Attr)) ;
until FindNext(sr) <> 0;
FindClose(sr);
end;
showMessage(intToStr(ListBox1.Items.count));
end;
(3)查找某目录下的所有目录,包含 “.” “..”
procedure TForm1.Button2Click(Sender: TObject);
var sr: TSearchRec;
begin
ListBox1.Items.Clear ;
if FindFirst(\'D:\work\*.*\', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory)<>0 then
ListBox1.Items.Add(sr.Name+ \' \'+intToStr(sr.Attr)) ;
until FindNext(sr) <> 0;
FindClose(sr);
end;
showMessage(intToStr(ListBox1.Items.count));
end;
(4)查找某目录下的指定文件,包含子目录
procedure TForm1.Button1Click(Sender: TObject);
//逐层目录第归
procedure findSubDir(parentDir:string);
var sr: TSearchRec; sDir:string;
begin
//(1)查找当前目录
StatusBar1.SimpleText := parentDir;
findSpecFile(parentDir,\'test.txt\'); //(A)指定文件查找
//findLikeFile(parentDir,\'test\'); //(B)文件名包含查找
//(2)第归查找子目录
if FindFirst(parentDir+\'*.*\', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Name=\'..\')or(sr.Name=\'.\') then continue;
if (sr.Attr and faDirectory)<>0 then
begin
sDir:=parentDir+sr.Name+\'\\';
findSubDir(sDir); //逐层第归
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
var
sr: TSearchRec; sDir:string;
begin
Screen.Cursor := crHourGlass;
ListBox1.Items.Clear ;
try
sDir:=\'D:\back\\'; //初始目录
findSubDir(sDir);
if ListBox1.Items.Count >0 then
StatusBar1.SimpleText :=\'共找到个\'+intToStr(ListBox1.Items.Count)+\'文件\'
else
StatusBar1.SimpleText :=\'没有找到文件\';
finally
Screen.Cursor := crDefault;
end;
end;