关于文件夹和文件操作的问题.(100分)

  • 主题发起人 主题发起人 ljx072
  • 开始时间 开始时间
L

ljx072

Unregistered / Unconfirmed
GUEST, unregistred user!
本人想做一个文件备份的软件,但不知怎样取得某文件下面的所有子目录及文件,软件的思
路是这样的,比较源文件夹下的文件是否比目标文件夹的文件新,如果是,就覆盖目标文件
夹中的文件.要每一个子目录进入比较,并且如果目标文件夹如果没有该子目录就创建它.
请大家帮帮忙,最好有源码,EMAIL:ljx072@163.net
 
用FindFirst和FindNext就可以轻松搞定了。看看这两个函数的帮助,应该不难的。
 
这里有个列举某个文件夹多有文件的例子:
代码:
procedure TForm1.Button1Click(Sender: TObject);
var
   FileSearchRec: TSearchRec;
begin
    memo1.Clear;
   if FindFirst('f:/' + '*.*', faanyfile, FileSearchRec) = 0 then
   begin
      if (FileSearchRec.Name <> '.') and (FileSearchRec.Name <> '..') and
         ((FileSearchRec.Attr and faDirectory) <> faDirectory) then
      begin
   
         memo1.Lines.Add(FileSearchRec.Name);
      end
      else
      begin
     
      end;
      while FindNext(FileSearchRec) = 0 do
      begin
         if (FileSearchRec.Name <> '.') and (FileSearchRec.Name <> '..') and
            ((FileSearchRec.Attr and faDirectory) <> faDirectory) then
         begin
            memo1.Lines.Add(FileSearchRec.Name); //
         end
         else
         begin
         //如果想遍历子目录,则在此递归操作
         end;
      end;
   end;
   findclose(FileSearchRec);
end;
 
取得文件的时间来判断
FileHandle := FileOPen( FileName, fmOpenRead ) ;
GetFileTime( FileHandle, @time1, @time2, @time3 );// time1,2,3:创建时间,最后存取时间,最后修改时间
fileclose(FileHandle);

FileTimeToSystemTime;
SystemTimeToDateTime;
 
怎样删除多级空目录?
 
作FindFirst和FindNext
如果得到的是文件,就进行相应的拷贝操作;
如果得到的是子文件夹,进行递归调用。
 
删除空目录?不懂意思,用rmdir函数就行了
 
删除目录
(里面有文件也可以删除)
uses ShellAPI;
function DelDirectory(const Source:string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(source+#0);
pTo := #0#0;
fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
end;
Result := (SHFileOperation(fo) = 0);
end;
 
多人接受答案了。
 
后退
顶部