这个很容易吧,你就一直检测这个目录有没有新文件,有则拷贝过去,顺便删除.这里要注意一点就是可能这个文件还在读写状态.反正就是循环去检测就就完了.function TFrmMain.FindFiles(APath: string): Integer; var SearchRec:TSearchRec; FileAttrs: Integer; FileDriverDateTime,FileSaveDateTime:String; TempFile:String; begin Result:=0; FileAttrs:=faAnyFile; If FindFirst(APath+'\*.*',FileAttrs,SearchRec) = 0 then begin try If(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin If SearchRec.Attr = faDirectory then //目录继续搜索,递归 ReSult:=ReSult+FindFiles(APath+'\'+SearchRec.Name) Else begin //是文件则进行转发 try ReSult:=ReSult+1; TempFile:=APath+'\'+SearchRec.Name; Memo1.Lines.Add(TempFile); FileDriverDateTime:=GetFileDriverDateTime(TempFile); FileSaveDateTime:=GetFileSaveDateTime(TempFile); If MoreFilePathTransmitFile(TempFile,'',FileDriverDateTime,FileSaveDateTime) then ; DeleteFile(TempFile); finally end; end; end; While FindNext(SearchRec)=0 do begin If(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin If SearchRec.Attr = faDirectory then //目录继续搜索,递归 ReSult:=ReSult+FindFiles(APath+'\'+SearchRec.Name) Else begin //是文件则进行转发 try ReSult:=ReSult+1; TempFile:=APath+'\'+SearchRec.Name; Memo1.Lines.Add(TempFile); FileDriverDateTime:=GetFileDriverDateTime(TempFile); FileSaveDateTime:=GetFileSaveDateTime(TempFile); If MoreFilePathTransmitFile(TempFile,'',FileDriverDateTime,FileSaveDateTime) then ; DeleteFile(TempFile); finally end; end; end; end; finally FindClose(SearchRec); end; end; end;这是我做的一个例子.
文件创建的时间是通过GetFileTime取得,要注意GetFileTime取得的时间并不是本地时间,还要使用FileTimeToLocalFileTime函数转换为本地文件时间,再转为FileTimeToSystemTime才是创建的时间
下面是GetFileTime的原型
BOOL GetFileTime(
HANDLE hFile,
LPFILETIME lpCreationTime,
LPFILETIME lpLastAccessTime,
LPFILETIME lpLastWriteTime
);
var
SearchRec:TSearchRec;
FileAttrs: Integer;
FileDriverDateTime,FileSaveDateTime:String;
TempFile:String;
begin
Result:=0;
FileAttrs:=faAnyFile;
If FindFirst(APath+'\*.*',FileAttrs,SearchRec) = 0 then
begin
try
If(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
If SearchRec.Attr = faDirectory then //目录继续搜索,递归
ReSult:=ReSult+FindFiles(APath+'\'+SearchRec.Name)
Else begin //是文件则进行转发
try
ReSult:=ReSult+1;
TempFile:=APath+'\'+SearchRec.Name;
Memo1.Lines.Add(TempFile);
FileDriverDateTime:=GetFileDriverDateTime(TempFile);
FileSaveDateTime:=GetFileSaveDateTime(TempFile);
If MoreFilePathTransmitFile(TempFile,'',FileDriverDateTime,FileSaveDateTime) then
;
DeleteFile(TempFile);
finally
end;
end;
end;
While FindNext(SearchRec)=0 do
begin
If(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
If SearchRec.Attr = faDirectory then //目录继续搜索,递归
ReSult:=ReSult+FindFiles(APath+'\'+SearchRec.Name)
Else begin //是文件则进行转发
try
ReSult:=ReSult+1;
TempFile:=APath+'\'+SearchRec.Name;
Memo1.Lines.Add(TempFile);
FileDriverDateTime:=GetFileDriverDateTime(TempFile);
FileSaveDateTime:=GetFileSaveDateTime(TempFile);
If MoreFilePathTransmitFile(TempFile,'',FileDriverDateTime,FileSaveDateTime) then
;
DeleteFile(TempFile);
finally
end;
end;
end;
end;
finally
FindClose(SearchRec);
end;
end;
end;这是我做的一个例子.