是这样的,我有一个第三方软件,会每隔30秒在当前目录下生成一个.jpg文件,随机命名的,现在我想也是每个30秒得到最新产生的.jpg文件拷贝到其它目录后删掉当前目录下所有.jpg文件,如何做,各位给个思路!目前最大的问题我是不知道如何取得最新建立的.jpg文件.

解决方案 »

  1.   

    分别取得每个文件的创建时间,然后对比,取最新的.
    文件创建的时间是通过GetFileTime取得,要注意GetFileTime取得的时间并不是本地时间,还要使用FileTimeToLocalFileTime函数转换为本地文件时间,再转为FileTimeToSystemTime才是创建的时间
    下面是GetFileTime的原型
    BOOL   GetFileTime(    
              HANDLE   hFile, 
              LPFILETIME   lpCreationTime, 
              LPFILETIME   lpLastAccessTime, 
              LPFILETIME   lpLastWriteTime   
            );   
      

  2.   

    这个很容易吧,你就一直检测这个目录有没有新文件,有则拷贝过去,顺便删除.这里要注意一点就是可能这个文件还在读写状态.反正就是循环去检测就就完了.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;这是我做的一个例子.