我想在系统上的所有磁盘上搜索文件.我已经知道如何从这个问题搜索单个磁盘:如何通过Delphi中的所有子目录搜索文件
我用它作为
function TMyForm.FileSearch(const dirName: string);
...
FileSearch('C:');
Run Code Online (Sandbox Code Playgroud)
我不知道怎么做是用它来查找所有可用驱动器号,C,D,E等的文件.如何找到那些可用驱动器号的列表?
我正在使用此线程中的代码(如何通过Delphi中的所有SubDirectories搜索文件)以递归方式查找文件:
procedure FindFilePattern(root:String;pattern:String);
var
SR:TSearchRec;
begin
root:=IncludeTrailingPathDelimiter(root);
if FindFirst(root+'*.*',faAnyFile,SR) = 0 then
begin
repeat
Application.ProcessMessages;
if ((SR.Attr and faDirectory) = SR.Attr ) and (pos('.',SR.Name)=0) then
FindFilePattern(root+SR.Name,pattern)
else
begin
if pos(pattern,SR.Name)>0 then Form1.ListBox1.Items.Add(Root+SR.Name);
end;
until FindNext(SR)<>0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FindFilePattern('C:\','.exe');
end;
Run Code Online (Sandbox Code Playgroud)
它工作但由于某种原因,它忽略了目录Program Files,Program Files(x86)和Users.不幸的是,我正在搜索的文件位于这些文件夹中.有人知道为什么会这样吗?
任何提示都会非常有帮助,
谢谢