请问如何遍历所有可用硬盘,并且搜索所有文件夹找出文件,只要求找到一个符合的就停止!
1、遍历所有可用硬盘盘符;
2、搜索硬盘下所有文件夹,并找出匹配文件;
3。只要求找到一个符合的就停止搜索,转而继续搜索下一个文件。有谁会啊!帮帮忙!
1、遍历所有可用硬盘盘符;
2、搜索硬盘下所有文件夹,并找出匹配文件;
3。只要求找到一个符合的就停止搜索,转而继续搜索下一个文件。有谁会啊!帮帮忙!
解决方案 »
- 使用 datetimepicker 小结
- 判断是自动输入还是手工输入问题
- 在win98 下提示:找不到桌面下的mytel.mdb 文件?
- 求助:怎样对文件夹进行操作(隐藏、加密等)?
- 如何启动两个相同的应用!
- result=format(where %s %s "%s"'.[field,condition,param]);,是什么意思,。请教各位大哥
- Query里是否可以引用视图概念!如何实现?
- 怎样在webbrowser控件的openwindow2事件中得到当前需打开的网页地址??
- 我是林林,谢谢你
- 关于richedit。。。。。。。。。。。。。。。。。。
- 关于Ehlib3.2
- 两个问题1)两个edit相加在第三个edit上得出值2)下拉单中选一值在另一list中得出对应值
还有FindFirstFile
FindNextFile
FindClose//一定要关闭呀
var
Bits:set of 0..25;
Num:integer;
Item1:TMenuItem;
begin
PopupMenu1.Items[0].Clear;
integer(Bits):=Windows.GetLogicalDrives;
for Num:=0 to 25 do
if Num in Bits then begin
Item1:=TMenuItem.Create(self);
Item1.Caption:=Char(Num+Ord('A'))+':\';
Item1.OnClick:=OpenURL;
PopupMenu1.Items[0].Add(Item1);
//Item1.Free;
case GetDriveType(pchar(char(Num+ord('A'))+':\')) of
0:Item1.ImageIndex:=0;
1:Item1.ImageIndex:=1;
DRIVE_REMOVABLE:Item1.ImageIndex:=2;
DRIVE_FIXED:Item1.ImageIndex:=3;
DRIVE_REMOTE:Item1.ImageIndex:=4;
DRIVE_CDROM:Item1.ImageIndex:=5;
DRIVE_RAMDISK:Item1.ImageIndex:=6;
end;
end;
end;下面这段是递归统计某一目录下所有文件大小的,可以参考一下:
function TForm1.DirSize(Dir:string;DirBytes:int64):int64;
var
SearchRec : TSearchRec;
Separator : string;
begin
if Copy(Dir,Length(Dir),1)='\' then
Separator := ''
else
Separator := '\';
if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then begin
if FileExists(Dir+Separator+SearchRec.Name) then begin
DirBytes := DirBytes + SearchRec.Size;
{Memo1.Lines.Add(Dir+Separator+SearchRec.Name);}
end else if DirectoryExists(Dir+Separator+SearchRec.Name) then begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin
DirBytes:=DirBytes+DirSize(Dir+Separator+SearchRec.Name,DirBytes);
end;
end;
while FindNext(SearchRec) = 0 do begin
if FileExists(Dir+Separator+SearchRec.Name) then begin
DirBytes := DirBytes + SearchRec.Size;
{Memo1.Lines.Add(Dir+Separator+SearchRec.Name);}
end else if DirectoryExists(Dir+Separator+SearchRec.Name) then
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin
DirBytes:=DirBytes+DirSize(Dir+Separator+SearchRec.Name,DirBytes);
end;
end;
end;
end;
FindClose(SearchRec);
result:=DirBytes
end;
主要是只要找到一个符合的文件就结束搜索,不再继续搜索其他目录,减少搜索的时间!
不一定要源码,告诉一个想法也行!