有什么办法得到一个文件的修改时间吗?

解决方案 »

  1.   

    BOOL GetFileTime(    HANDLE hFile, // identifies the file 
        LPFILETIME lpCreationTime, // address of creation time 
        LPFILETIME lpLastAccessTime, // address of last access time  
        LPFILETIME lpLastWriteTime  // address of last write time 
       );
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     l_SR: TSearchRec;
    begin
     FindFirst('C:\Windows\notepad.exe', faAnyFile, l_SR);
     ShowMessage(DateTimeToStr(FileDateToDateTime(l_SR.Time)));
    end;
      

  3.   

    edit1.text:=DateTimetoStr(FileDateToDateTime(Fileage(FileName)));
      

  4.   

    首部 function FileGetDate(Handle: Integer): Integer; $[SysUtils.pas
    功能 返回文件的修改时间
    说明 读取失败则返回-1
    参考 function Windows.GetFileTime
    例子
    ///////Begin FileGetDate
    procedure TForm1.Button1Click(Sender: TObject);
    var
    I: Integer;
    begin
    I := FileOpen(Edit1.Text, fmOpenRead);
    if I < 0 then Exit;
    SpinEdit1.Value := FileGetDate(I);
    Edit2.Text := DateTimeToStr(FileDateToDateTime(SpinEdit1.Value));
    FileClose(I);
    end;
    ///////End FileGetDate
      

  5.   

    我转的:
    利用Delphi中的FindFirst函数可以得到一个文件的属性记录,该记录中的FindData域中就记载了详细的文件时间信息。
    然而遗憾的是,FindData中的时间信息是不能直接得到的。因此,本人编写了一个转换函数来完成文件时间格式的转换
    function chgfiledate(Fd:_FileTime):TDateTime;
    { 转换文件的时间格式 }
    var
    Tct:_SystemTime;
    Temp:_FileTime;
    begin
    FileTimeToLocalFileTime(Fd,Temp);
    FileTimeToSystemTime(Temp,Tct);
    chgfiledate:=SystemTimeToDateTime(Tct);
    end;
    有了上面的函数支持,就可以获取一个文件的时间信息了。以下是一个简单的例子
    procedure GetFile(Tf:string);
    { 获取文件时间,Tf表示目标文件路径和名称 }
    const
    Model='yyyy/mm/dd,hh:mm:ss'; { 设定时间格式 }
    var
    Tp:TSearchRec; { 申明Tp为一个查找记录 }
    T1,T2,T3:string;
    begin
    FindFirst(Tf,faAnyFile,Tp); { 查找目标文件 }
    T1:=FormatDateTime(Model,chgfiledate(Tp.FindData.ftCreationTime));
    { 返回文件的创建时间 }T2:=FormatDateTime(Model,chgfiledate(Tp.FindData.ftLastWriteTime));
    { 返回文件的修改时间 }
    T3:=FormatDateTime(Model,Now);
    { 返回文件的当前访问时间 }
    FindClose(Tp);
    showmessage(t1+'  '+t2+'  '+t3);
    end;
      

  6.   

    呵呵,前两天正好写了一个
    var
    hf:Thandle;
    lpfi:TByHandleFileInformation;
    filetime:string;
    time:integer;
    begin   
       hf:=fileOpen('C:\a.txt',fmOPENread); //文件句柄
       GetFileInformationByHandle(hf,lpfi); //文件信息
       FileTimeToDosDateTime(lpfi.ftLastWriteTime,LongRec(Time).Hi,LongRec(Time).Lo);
       filetime:=datetimetostr(filedatetodatetime(Time));  //文件修改时间   
    end;
      

  7.   

    忘了最后还要写上
    fileclose(hf);
    不然的话就会报文件被占用的错误。
    ^*^