怎样取得文件的日期时间等信息?
就如右键菜单"属性"显示的一样

解决方案 »

  1.   

    转在单元开头的 uses 子句中加上对 
    Sysutils 单元的引用?FileDateToDateTime 和 DateTimeToFileDate 这两个函数是在
    该单元中定义的写了两个函数:
    type
      TFileTimeType = (fttCreation, fttLastAccess, fttLastWrite);
      //分别对应文件创建时间,访问时间,修改时间
    function GetFileDateTime(const FileName: string; FileTimeType: TFileTimeType): TDateTime;
    var     
      Handle: THandle;
      FindData: TWin32FindData;
      LocalFileTime: TFileTime;
      DosDateTime: Integer;
    begin
      Handle := FindFirstFile(PChar(FileName), FindData);
      if Handle <> INVALID_HANDLE_VALUE then
      begin
        Windows.FindClose(Handle);
        if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
        begin
          case FileTimeType of
          fttCreation:
            FileTimeToLocalFileTime(FindData.ftCreationTime, LocalFileTime);
          fttLastAccess:
            FileTimeToLocalFileTime(FindData.ftLastAccessTime, LocalFileTime);
          fttLastWrite:
            FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
          end;
          if FileTimeToDosDateTime(LocalFileTime, LongRec(DosDateTime).Hi,
            LongRec(DosDateTime).Lo) then 
          begin
            Result := FileDateToDateTime(DosDateTime);
            Exit;
          end;
        end;
      end;
      Result := -1;end;function SetFileDateTime(const FileName: string; FileTimeType: TFileTimeType; DateTime: TDateTime): Integer;
    var
      Handle: THandle;
      LocalFileTime, FileTime: TFileTime;
      DosDateTime: Integer;
      I : TFileTimeType;
      FileTimes: array[TFileTimeType] of Pointer;
    begin
      Result := 0;
      DosDateTime := DateTimeToFileDate(DateTime);
      Handle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);
      if Handle <> INVALID_HANDLE_VALUE then
      begin
        for I := fttCreation to fttLastWrite do
          FileTimes[I] := nil;
        DosDateTimeToFileTime(LongRec(DosDateTime).Hi, LongRec(DosDateTime).Lo, LocalFileTime);
        LocalFileTimeToFileTime(LocalFileTime, FileTime);
        FileTimes[FileTimeType] := @FileTime;
        if SetFileTime(Handle, FileTimes[fttCreation], FileTimes[fttLastAccess],
          FileTimes[fttLastWrite]) then Exit;
      end;
      Result := GetLastError;end;使用:
    1、获取文件创建时间:
       ShowMessage(DateTimeToStr(GetFileDateTime('c:\key.txt',fttLastWrite)));
    2、设置文件修改时间:
       SetFileDateTime('c:\key.txt',fttLastWrite, datetimepicker1.DateTime); 
      

  2.   

    GetFileTime取得文件的日期(GetFileTime可以提供三种日期,创建、修改、最后时间)