读取文件的建立时间及存取时间
想要进一步读取文件的相关资讯, 必须先呼叫 API 函数的 OpenFile 取得文件的 Handle, 然後再利用 Handle 呼叫 GetFileInformationByHandle 读取文件的相关资讯, 而在读取的文件相关资讯中便含有文件建立、修改、及存取时间,程式执行过程如下:(假设想读取的文件是"c:autoexec.bat")
REF 更改文件日期时间
Public Const OFS_MAXPATHNAME = 128 Public Const OF_READ = &H0 Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName(OFS_MAXPATHNAME) As Byte End Type
Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type
Type FileTime dwLowDateTime As Long dwHighDateTime As Long End Type
Type BY_HANDLE_FILE_INFORMATION dwFileAttributes As Long ftCreationTime As FileTime ftLastAccessTime As FileTime ftLastWriteTime As FileTime dwVolumeSerialNumber As Long nFileSizeHigh As Long nFileSizeLow As Long nNumberOfLinks As Long nFileIndexHigh As Long nFileIndexLow As Long End Type
Type TIME_ZONE_INFORMATION bias As Long StandardName(32) As Integer StandardDate As SYSTEMTIME StandardBias As Long DaylightName(32) As Integer DaylightDate As SYSTEMTIME DaylightBias As Long End Type
Declare Function GetTimeZoneInformation Lib "kernel32" _ (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, _ lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long Declare Function GetFileInformationByHandle Lib "kernel32" (ByVal hFile As _ Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As _ FileTime, lpSystemTime As SYSTEMTIME) As Long
Dim FileHandle As Long Dim FileInfo As BY_HANDLE_FILE_INFORMATION Dim lpReOpenBuff As OFSTRUCT, ft As SYSTEMTIME Dim tZone As TIME_ZONE_INFORMATION
Dim dtCreate As Date 注释: 建立时间 Dim dtAccess As Date 注释: 存取日期 Dim dtWrite As Date 注释: 修改时间 Dim bias As Long
注释: 先取得 autoexec.bat 的 File Handle FileHandle = OpenFile("c:autoexec.bat", lpReOpenBuff, OF_READ) 注释: 利用 File Handle 读取文件资讯 Call GetFileInformationByHandle(FileHandle, FileInfo) Call CloseHandle(FileHandle) 注释: 读取 Time Zone 资讯, 因为上一步骤的文件时间是「格林威治」时间 Call GetTimeZoneInformation(tZone) bias = tZone.bias 注释: 时间差, 以「分」为单位 Call FileTimeToSystemTime(FileInfo.ftCreationTime, ft) 注释: 转换时间资料结构 dtCreate = DateSerial(ft.wYear, ft.wMonth, ft.wDay) + ; TimeSerial(ft.wHour, ft.wMinute - bias, ft.wSecond) Call FileTimeToSystemTime(FileInfo.ftLastAccessTime, ft) dtAccess = DateSerial(ft.wYear, ft.wMonth, ft.wDay) + ; TimeSerial(ft.wHour, ft.wMinute - bias,ft.wSecond) Call FileTimeToSystemTime(FileInfo.ftLastWriteTime, ft) dtWrite = DateSerial(ft.wYear, ft.wMonth, ft.wDay) + TimeSerial(ft.wHour, ft.wMinute - bias,ft.wSecond)
注释:执行以上程式所得到的 dtCreate、dtWrite、及 dtAccess 变数, 即分别为文件 注释:建立、修改、及存取时间。
| 出处: 巧巧读书 日期: 2006-10-31 |
好: 一般: 差: |
|