获取指定文件夹下文件列表? ( 积分: 300 )

  • 主题发起人 主题发起人 myhby
  • 开始时间 开始时间
M

myhby

Unregistered / Unconfirmed
GUEST, unregistred user!
某个文件夹下有很多文件,文件扩展名也有多种,各个文件的最后修改日期不太相同。
要求:获某一天的某一种文件类型的文件列表?
例如:要获取最后修改日期为2007年8月15日的所有.txt文件名列表?
 
FindFirst, FindNext,
根据找到的结果自己 if
 
procedure SearchFileEx(const Dir, Ext: string; Files: TStrings);
var
Found: TSearchRec;
i: integer;
Dirs: TStrings;
Finished: integer;
StopSearch: Boolean;
begin
StopSearch := False;
Dirs := TStringList.Create;
Finished := FindFirst(Dir+'/' + '*.*', 63, Found);
while (Finished = 0) and not (StopSearch) do
begin
if (Found.Name <> '.') and (Found.Name <> '..') then
begin
if (Found.Attr and faDirectory) = faDirectory then
Dirs.Add(Dir+'/' + Found.Name)
else
if Pos(UpperCase(Ext), UpperCase(Found.Name)) > 0 then
Files.Add(Dir +'/' + Found.Name);
end;
Finished := FindNext(Found);
end;
SysUtils.FindClose(Found);
if not StopSearch then
for i := 0 to Dirs.Count - 1 do
SearchFileEx(Dirs, Ext, Files);
Dirs.Free;
end;

procedure FindSubDir(DirName: string; FileString: TStrings);
var
searchRec: TsearchRec;
begin
//找出所有下级子目录。
if (FindFirst(DirName + '*.*', faDirectory, SearchRec) = 0) then
begin
if IsValidDir(SearchRec) then
FileString.Add(DirName + SearchRec.Name);
while (FindNext(SearchRec) = 0) do
begin
if IsValidDir(SearchRec) then
FileString.Add(DirName + SearchRec.Name);
end;
SysUtils.FindClose(SearchRec);
end;
end;

function IsValidDir(SearchRec: TSearchRec): Boolean;
begin
if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
Result := True
else
Result := False;
end;



查以前的帖子,太多了.
 
判断条件'创建日期'+'扩展名'
 
有没有效率高点的办法,文件夹文件很多,如果全部判断一次,效率会很低下
 
没有,就这。
 
那就用VISTA吧,那个搜索好像挺快的
 
你试试XP的搜索有多快?反正不能比他的还快了
 
要不就拉个控件改改后缀就行了。。。Dev就这个控件。FileListbox好像。。

否则只能自己去遍历了。
 
一点愚见,供参考
递归文件夹下的所有文件夹,用dos命令,
dir >命令,把满足条件的追加到.txt文件中,
然后用tstrings解析该.txt文件。
肯定能做的,速度我没试,呵呵。
 
后退
顶部