VB2005如何修改一个文件的“修改时间”?

VB2005如何修改一个文件的“修改时间”?,谢谢!最好有脚本或者示例,只有用哪个函数、控件、方法也行谢谢... VB2005如何修改一个文件的“修改时间”?,谢谢!最好有脚本或者示例,只有用哪个函数、控件、方法也行 谢谢 展开
 我来答
BeyondPC
2010-12-17 · 超过20用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:47.6万
展开全部

Option Explicit

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal NoSecurity 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 GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

Private Declare Function SetFileCreatedTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, ByVal NullLastAccessTime As Long, ByVal NullLastWriteTime As Long) As Long

Private Declare Function SetFileAccessTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, ByVal NullCreationTime As Long, lpLastAccessTime As FILETIME, ByVal NullWriteTime As Long) As Long

Private Declare Function SetFileModifiedTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, ByVal NullCreationTime As Long, ByVal NullLastAccessTime As Long, lpLastWriteTime As FILETIME) As Long

Private Type FILETIME

    dwLowDateTime As Long

    dwHighDateTime As Long

End Type

Private Const GENERIC_READ = &H80000000

Private Const GENERIC_WRITE = &H40000000

Private Const FILE_SHARE_READ = &H1

Private Const FILE_SHARE_WRITE = &H2

Private Const OPEN_EXISTING = 3

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 Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long

Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long

Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Private Function SystemTimeToDate(system_time As SYSTEMTIME) As Date

    With system_time

        SystemTimeToDate = CDate( _

            Format$(.wMonth) & "/" & _

            Format$(.wDay) & "/" & _

            Format$(.wYear) & " " & _

            Format$(.wHour) & ":" & _

            Format$(.wMinute, "00") & ":" & _

            Format$(.wSecond, "00"))

    End With

End Function

' Convert a Date into a SYSTEMTIME.

Private Function DateToSystemTime(ByVal the_date As Date) As SYSTEMTIME

    With DateToSystemTime

        .wYear = Year(the_date)

        .wMonth = Month(the_date)

        .wDay = Day(the_date)

        .wHour = Hour(the_date)

        .wMinute = Minute(the_date)

        .wSecond = Second(the_date)

    End With

End Function

' Convert the FILETIME structure into a Date.

Private Function FileTimeToDate(file_time As FILETIME) As Date

Dim system_time As SYSTEMTIME

    ' Convert the FILETIME into a SYSTEMTIME.

    FileTimeToSystemTime file_time, system_time

    ' Convert the SYSTEMTIME into a Date.

    FileTimeToDate = SystemTimeToDate(system_time)

End Function

' Convert a Date into a FILETIME structure.

Private Function DateToFileTime(ByVal the_date As Date) As FILETIME

Dim system_time As SYSTEMTIME

Dim file_time As FILETIME

    ' Convert the Date into a SYSTEMTIME.

    system_time = DateToSystemTime(the_date)

    ' Convert the SYSTEMTIME into a FILETIME.

    SystemTimeToFileTime system_time, file_time

    DateToFileTime = file_time

End Function

' Return True if there is an error.

Private Function GetFileTimes(ByVal file_name As String, ByRef creation_date As Date, ByRef access_date As Date, ByRef modified_date As Date, ByVal local_time As Boolean) As Boolean

Dim file_handle As Long

Dim creation_filetime As FILETIME

Dim access_filetime As FILETIME

Dim modified_filetime As FILETIME

Dim file_time As FILETIME

    ' Assume something will fail.

    GetFileTimes = True

    ' Open the file.

    file_handle = CreateFile(file_name, GENERIC_READ, _

        FILE_SHARE_READ Or FILE_SHARE_WRITE, _

        0&, OPEN_EXISTING, 0&, 0&)

    If file_handle = 0 Then Exit Function

    ' Get the times.

    If GetFileTime(file_handle, creation_filetime, access_filetime, modified_filetime) = 0 Then

        CloseHandle file_handle

        Exit Function

    End If

    ' Close the file.

    If CloseHandle(file_handle) = 0 Then Exit Function

    ' See if we should convert to the local

    ' file system time.

    If local_time Then

        ' Convert to local file system time.

        FileTimeToLocalFileTime creation_filetime, file_time

        creation_filetime = file_time

        FileTimeToLocalFileTime access_filetime, file_time

        access_filetime = file_time

        FileTimeToLocalFileTime modified_filetime, file_time

        modified_filetime = file_time

    End If

    ' Convert into dates.

    creation_date = FileTimeToDate(creation_filetime)

    access_date = FileTimeToDate(access_filetime)

    modified_date = FileTimeToDate(modified_filetime)

    GetFileTimes = False

End Function

' Return True if there is an error.

Private Function SetFileTimes(ByVal file_name As String, ByVal creation_date As Date, ByVal access_date As Date, ByVal modified_date As Date, ByVal local_times As Boolean) As Boolean

Dim file_handle As Long

Dim creation_filetime As FILETIME

Dim access_filetime As FILETIME

Dim modified_filetime As FILETIME

Dim file_time As FILETIME

    ' Assume something will fail.

    SetFileTimes = True

    ' Convert the dates into FILETIMEs.

    creation_filetime = DateToFileTime(creation_date)

    access_filetime = DateToFileTime(access_date)

    modified_filetime = DateToFileTime(modified_date)

    ' Convert the file times into system file times.

    If local_times Then

        LocalFileTimeToFileTime creation_filetime, file_time

        creation_filetime = file_time

        LocalFileTimeToFileTime access_filetime, file_time

        access_filetime = file_time

        LocalFileTimeToFileTime modified_filetime, file_time

        modified_filetime = file_time

    End If

    ' Open the file.

    file_handle = CreateFile(file_name, GENERIC_READ, _

        FILE_SHARE_READ Or FILE_SHARE_WRITE, _

        0&, OPEN_EXISTING, 0&, 0&)

    If file_handle = 0 Then Exit Function

'creation_date = FileTimeToDate(creation_filetime)

    ' Set the times.

    If SetFileTime(file_handle, creation_filetime, access_filetime, modified_filetime) = 0 Then

        CloseHandle file_handle

        Exit Function

    End If

    ' Close the file.

    If CloseHandle(file_handle) = 0 Then Exit Function

    SetFileTimes = False

End Function

' Return True if there is an error.

Private Function SetFileModifiedDate(ByVal file_name As String, ByVal modified_date As Date, ByVal local_times As Boolean) As Boolean

Dim file_handle As Long

Dim modified_filetime As FILETIME

Dim file_time As FILETIME

    ' Assume something will fail.

    SetFileModifiedDate = True

    ' Convert the date into a FILETIME.

    modified_filetime = DateToFileTime(modified_date)

    ' Convert the file time into a system file time.

    If local_times Then

        LocalFileTimeToFileTime modified_filetime, file_time

        modified_filetime = file_time

    End If

    ' Open the file.

    file_handle = CreateFile(file_name, GENERIC_WRITE, _

        FILE_SHARE_READ Or FILE_SHARE_WRITE, _

        0&, OPEN_EXISTING, 0&, 0&)

    If file_handle = 0 Then Exit Function

    ' Set the time.

    If SetFileModifiedTime(file_handle, ByVal 0&, ByVal 0&, modified_filetime) = 0 Then

        CloseHandle file_handle

        Exit Function

    End If

    ' Close the file.

    If CloseHandle(file_handle) = 0 Then Exit Function

    SetFileModifiedDate = False

End Function

' Return True if there is an error.

Private Function SetFileAccessedDate(ByVal file_name As String, ByVal accessed_date As Date, ByVal local_times As Boolean) As Boolean

Dim file_handle As Long

Dim accessed_filetime As FILETIME

Dim file_time As FILETIME

    ' Assume something will fail.

    SetFileAccessedDate = True

    ' Convert the date into a FILETIME.

    accessed_filetime = DateToFileTime(accessed_date)

    ' Convert the file time into a system file time.

    If local_times Then

        LocalFileTimeToFileTime accessed_filetime, file_time

        accessed_filetime = file_time

    End If

    ' Open the file.

    file_handle = CreateFile(file_name, GENERIC_WRITE, _

        FILE_SHARE_READ Or FILE_SHARE_WRITE, _

        0&, OPEN_EXISTING, 0&, 0&)

    If file_handle = 0 Then Exit Function

    ' Set the time.

    If SetFileAccessTime(file_handle, ByVal 0&, accessed_filetime, ByVal 0&) = 0 Then

        CloseHandle file_handle

        Exit Function

    End If

    ' Close the file.

    If CloseHandle(file_handle) = 0 Then Exit Function

    SetFileAccessedDate = False

End Function

' Return True if there is an error.

Private Function SetFileCreatedDate(ByVal file_name As String, ByVal created_date As Date, ByVal local_times As Boolean) As Boolean

Dim file_handle As Long

Dim created_filetime As FILETIME

Dim file_time As FILETIME

    ' Assume something will fail.

    SetFileCreatedDate = True

    ' Convert the date into a FILETIME.

    created_filetime = DateToFileTime(created_date)

    ' Convert the file time into a system file time.

    If local_times Then

        LocalFileTimeToFileTime created_filetime, file_time

        created_filetime = file_time

    End If

    ' Open the file.

    file_handle = CreateFile(file_name, GENERIC_WRITE, _

        FILE_SHARE_READ Or FILE_SHARE_WRITE, _

        0&, OPEN_EXISTING, 0&, 0&)

    If file_handle = 0 Then Exit Function

    ' Set the time.

    If SetFileCreatedTime(file_handle, created_filetime, ByVal 0&, ByVal 0&) = 0 Then

        CloseHandle file_handle

        Exit Function

    End If

    ' Close the file.

    If CloseHandle(file_handle) = 0 Then Exit Function

    SetFileCreatedDate = False

End Function

Private Sub Command1_Click()

Dim date_created As Date

Dim date_accessed As Date

Dim date_modified As Date

    txtCreationTime.Text = ""

    txtLastAccessedTime.Text = ""

    txtLastModifiedTime.Text = ""

    ' Get the local file system times.

    If GetFileTimes(Text1.Text, date_created, date_accessed, date_modified, True) Then

        txtCreationTime.Text = "Error"

    Else

        txtCreationTime.Text = Format$(date_created)

        txtLastAccessedTime.Text = Format$(date_accessed)

        txtLastModifiedTime.Text = Format$(date_modified)

    End If

End Sub

' Set the file times.

'

' Note that setting the modification time counts as accessing

' the file so that sets the access time. Therefore, if you want

' to set the access time, you must do it last.

Private Sub Command2_Click()

    If Len(Trim$(txtCreationTime.Text)) > 0 Then

        If SetFileCreatedDate(Text1.Text, txtCreationTime.Text, True) Then

            MsgBox "Error setting creation time"

        End If

    End If

    If Len(Trim$(txtLastModifiedTime.Text)) > 0 Then

        If SetFileModifiedDate(Text1.Text, txtLastModifiedTime.Text, True) Then

            MsgBox "Error setting last modification time"

        End If

    End If

    If Len(Trim$(txtLastAccessedTime.Text)) > 0 Then

        If SetFileAccessedDate(Text1.Text, txtLastAccessedTime.Text, True) Then

            MsgBox "Error setting last access time"

        End If

    End If

    MsgBox "Done"

End Sub

匿名用户
2010-12-18
展开全部
使用My.Computer.FileSystem.GetFileInfo可以读取/修改一个指定文件的创建/最后访问/最后修改时间。
需要注意的是在学修改一个文件的属性的时候需确保这个文件不是只读的,当然只读属性可以编程去掉。

Dim f As IO.FileInfo = My.Computer.FileSystem.GetFileInfo("C:\boot.ini")
Dim isReadOnly As Boolean

isReadOnly = f.IsReadOnly

If isReadOnly Then
f.IsReadOnly = False '解除只读属性
End If

f.CreationTime = "2012-12-20 00:00:00" '创建时间
f.LastAccessTime = "2012-12-20 00:00:00" '访问时间
f.LastWriteTime = "2012-12-20 00:00:00" '修改时间

If isReadOnly Then
f.IsReadOnly = True '如果文件原来是只读的,就恢复这个属性
End If
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式