我偏要空!!

解决方案 »

  1.   

    FileDateTime  可以吗? 不行的话用 FindFirstFile
      

  2.   

    读取文件的建立时间及存取时间 
      想要进一步读取文件的相关资讯, 必须先呼叫 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 TypeType 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 TypeType 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 TypeType 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 LongDim FileHandle As Long
    Dim FileInfo As BY_HANDLE_FILE_INFORMATION
    Dim lpReOpenBuff As OFSTRUCT, ft As SYSTEMTIME
    Dim tZone As TIME_ZONE_INFORMATIONDim 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 变数, 即分别为文件
    '建立、修改、及存取时间。
      

  3.   

    Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long取得指定文件的时间信息
    Long,非零表示成功,零表示失败。会设置GetLastErrorhFile ----------  Long,文件的句柄  lpCreationTime -  FILETIME,用于装载文件的创建时间  lpLastAccessTime -  FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)  lpLastWriteTime -  FILETIME,用于装载文件上一次修改的时间如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal
      As Long)。这个函数返回的文件时间采用UTC格式'Files
    'This program needs a Dialog box, named CDBox1
    '  (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
    '   and select Microsoft Common Dialog control)
    Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
    End Type
    Private Type SHFILEOPSTRUCT
        hWnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAborted As Boolean
        hNameMaps As Long
        sProgress As String
    End Type
    Private 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
    Private Const GENERIC_WRITE = &H40000000
    Private Const OPEN_EXISTING = 3
    Private Const FILE_SHARE_READ = &H1
    Private Const FILE_SHARE_WRITE = &H2
    Private Const FO_DELETE = &H3
    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
    Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As Long) As Long
    Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
    Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
    Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
    Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
    Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
    Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
    Private Sub Form_Load()
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        Dim lngHandle As Long, SHDirOp As SHFILEOPSTRUCT, lngLong As Long
        Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
        'Set the dialog's title
        CDBox.DialogTitle = "Choose a file ..."
        'Raise an error when the user pressed cancel
        CDBox.CancelError = True
        'Show the 'Open File'-dialog
        CDBox.ShowOpen
        'Create a new directory
        CreateDirectory "C:\KPD-Team", ByVal &H0
        'Copy the selected file to our new directory
        CopyFile CDBox.filename, "C:\KPD-Team\" + CDBox.FileTitle, 0
        'Rename the file
        MoveFile "C:\KPD-Team\" + CDBox.FileTitle, "C:\KPD-Team\test.kpd"
        'Open the file
        lngHandle = CreateFile("C:\KPD-Team\test.kpd", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
        'Get the file's size
        MsgBox "The size of the selected file is" + Str$(GetFileSize(lngHandle, lngLong)) + " bytes."
        'Get the fil's time
        GetFileTime lngHandle, Ft1, Ft1, Ft2
        'Convert the file time to the local file time
        FileTimeToLocalFileTime Ft2, Ft1
        'Convert the file time to system file time
        FileTimeToSystemTime Ft1, SysTime
        MsgBox "The selected file was created on" + Str$(SysTime.wMonth) + "/" + LTrim(Str$(SysTime.wDay)) + "/" + LTrim(Str$(SysTime.wYear))
        'Close the file
        CloseHandle lngHandle
        'Delete the file
        DeleteFile "C:\KPD-Team\test.kpd"
        With SHDirOp
            .wFunc = FO_DELETE
            .pFrom = "C:\KPD-Team"
        End With
        'Delete the directory
        SHFileOperation SHDirOp
        End
    End Sub