文件信息

来源:互联网 发布:代做淘宝店 编辑:程序博客网 时间:2024/05/16 11:33
BOOL GetFileAttributesEx(  LPCTSTR lpFileName,  GET_FILEEX_INFO_LEVELS fInfoLevelId,  LPVOID lpFileInformation);lpFileName:文件名fInfoLevelId: 就传这个GetFileExInfoStandardlpFileInformation: 传入一个WIN32_FILE_ATTRIBUTE_DATA结构的指针。typedef struct _WIN32_FILE_ATTRIBUTE_DATA {     DWORD dwFileAttributes;     FILETIME ftCreationTime;     FILETIME ftLastAccessTime;     FILETIME ftLastWriteTime;     DWORD nFileSizeHigh;  DWORD nFileSizeLow;} WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;从结构中可以取出创建时间和最后访问时间。是FILETIME类型的:typedef struct _FILETIME {   DWORD dwLowDateTime;   /* low 32 bits  */   DWORD dwHighDateTime;  /* high 32 bits */} FILETIME, *PFILETIME, *LPFILETIME;再调用下面这个函数转换为SYSTEMTIME,年月日时分秒就都出来了:BOOL FileTimeToSystemTime(  const FILETIME* lpFileTime,  LPSYSTEMTIME lpSystemTime);
#include <vcl.h>
      #pragma hdrstop
      #include "Unit1.h"
      #pragma package(smart_init)
      #pragma resource "*.dfm"
      TForm1 *Form1;
      //---------------------------------------------------------------------------
      __fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner){}
      //---------------------------------------------------------------------------
      void __fastcall TForm1::FileListBox1Click(TObject *Sender)
      {                                 
      if(!FileExists(FileListBox1->FileName))return;
      AnsiString fName;
      fName=FileListBox1->FileName;
      HANDLE hd;        //CONST CHAR *
      hd=::CreateFile
      (
      fName.c_str(),
      GENERIC_READ,//只读操作
      0,//禁止共享操作
      NULL,
      OPEN_EXISTING,//仅仅打开指定文件
      NULL,//这个是设定文件属性
      NULL//对于模板文件访问的句柄
      );

      int theSize;
      theSize=::GetFileSize(hd,NULL);
      ShowMessage("文件【"+fName+"】大小"+IntToStr(theSize)+"byte");

      BY_HANDLE_FILE_INFORMATION lpFileInformation;
      ::GetFileInformationByHandle(hd,&lpFileInformation);

      FILETIME  theFileTime;
      LPSYSTEMTIME sysTime;

      theFileTime=lpFileInformation.ftCreationTime;
      FileTimeToSystemTime(&theFileTime,sysTime);
      AnsiString timeS;
      timeS=Format("文件创建时间%d年%d月%d日%d时%d分%d秒",
      ARRAYOFCONST((sysTime->wYear,sysTime->wMonth,sysTime->wDay,sysTime->wHour,sysTime->wMinute,sysTime->wSecond)));
      ShowMessage(timeS);//创建时间

      theFileTime=lpFileInformation.ftLastAccessTime;
      FileTimeToSystemTime(&theFileTime,sysTime);
      timeS=Format("文件访问时间%d年%d月%d日%d时%d分%d秒",
      ARRAYOFCONST((sysTime->wYear,sysTime->wMonth,sysTime->wDay,sysTime->wHour,sysTime->wMinute,sysTime->wSecond)));
      ShowMessage(timeS);//访问时间

      theFileTime=lpFileInformation.ftLastWriteTime;
      FileTimeToSystemTime(&theFileTime,sysTime);
      timeS=Format("文件写入时间%d年%d月%d日%d时%d分%d秒",
      ARRAYOFCONST((sysTime->wYear,sysTime->wMonth,sysTime->wDay,sysTime->wHour,sysTime->wMinute,sysTime->wSecond)));
      ShowMessage(timeS);//写入时间

      ShowMessage(lpFileInformation.dwVolumeSerialNumber);//版本序列号

      unsigned long theFileAttr=lpFileInformation.dwFileAttributes; //文件属性
      }
      /*
      FILE_ATTRIBUTE_ARCHIVE
      FILE_ATTRIBUTE_COMPRESSED
      FILE_ATTRIBUTE_DIRECTORY
      FILE_ATTRIBUTE_HIDDEN
      FILE_ATTRIBUTE_NORMAL
      FILE_ATTRIBUTE_OFFLINE
      FILE_ATTRIBUTE_READONLY
      FILE_ATTRIBUTE_SYSTEM
      FILE_ATTRIBUTE_TEMPORARY
      ::GetFileAttributes 好象只能获得文件:是文件还是夹、隐藏、文档、压缩不、
      只读、系统、临时 这些属性

      ::GetFileInformationByHandle 返回一个BY_HANDLE_FILE_INFORMATION结构,比较全活
      */
0 0
原创粉丝点击