Changeset 84 for Include/Classes


Ignore:
Timestamp:
Feb 3, 2007, 12:35:13 PM (18 years ago)
Author:
OverTaker
Message:

実装内容を変更。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Include/Classes/System/IO/FileSystemInfo.ab

    r83 r84  
    11Class FileSystemInfo
     2    m_CreationTime As FILETIME
     3    m_LastAccessTime As FILETIME
     4    m_LastWriteTime As FILETIME
     5    m_FileAttributes As DWord
    26Protected
    37    FullPath As String
     
    610    'Public Properties
    711    Function Attributes() As FileAttributes
    8         Dim data As WIN32_FIND_DATA
    9         If getFindFile(data) = False Then
    10             'Exception
    11             Debug
    12             Exit Function
    13         End If
    14         Select Case data.dwFileAttributes
     12        Select Case m_FileAttributes
    1513            Case FILE_ATTRIBUTE_ARCHIVE
    1614                Return Archive
     
    7775
    7876    Function CreationTime() As DateTime
    79         Dim data As WIN32_FIND_DATA
    80         If getFindFile(data) = False Then
    81             'Exception
    82             Debug
    83         End If
    84         Return DateTime.FromFileTime(data.ftCreationTime)
     77        Return DateTime.FromFileTime(m_CreationTime)
    8578    End Function
    8679
    8780    Sub CreationTime(ByRef value As DateTime)
    88         If setFileTime(_CreationTime, value) = FALSE Then
     81        m_CreationTime = value.ToFileTimeUtc()
     82        If setFileTime() = False Then
    8983            'Exception
    9084            debug
     
    10296
    10397    Function LastAccessTime() As DateTime
    104         Dim data As WIN32_FIND_DATA
    105         If getFindFile(data) = False Then
    106             'Exception
    107             Debug
    108         End If
    109         Return DateTime.FromFileTime(data.ftLastAccessTime)
     98        Return DateTime.FromFileTime(m_LastAccessTime)
    11099    End Function
    111100
    112101    Sub LastAccessTime(ByRef value As DateTime)
    113         If setFileTime(_LastAccessTime, value) = FALSE Then
     102        m_LastAccessTime = value.ToFileTimeUtc()
     103        If setFileTime() = False Then
    114104            'Exception
    115105            debug
     
    127117
    128118    Function LastWriteTime() As DateTime
    129         Dim data As WIN32_FIND_DATA
    130         If getFindFile(data) = False Then
    131             'Exception
    132             Debug
    133         End If
    134         Return DateTime.FromFileTime(data.ftLastWriteTime)
     119        Return DateTime.FromFileTime(m_LastWriteTime)
    135120    End Function
    136121
    137122    Sub LastWriteTime(ByRef value As DateTime)
    138         If setFileTime(_LastWriteTime, value) = FALSE Then
     123        m_LastWriteTime = value.ToFileTimeUtc()
     124        If setFileTime() = False Then
    139125            'Exception
    140126            debug
     
    152138
    153139    Function Exists() As Boolean
    154         Dim data As WIN32_FIND_DATA
    155         Return getFindFile(data)
     140        If m_FileAttributes = 0 Then
     141            Return False
     142        Else
     143            Return True
     144        End If
    156145    End Function
    157146
     
    176165    End Sub
    177166
    178     '未実装
    179167    Sub Refresh()
     168        Dim data As WIN32_FIND_DATA
     169        Dim hFind As HANDLE
     170        hFind = FindFirstFile(FullPath, data)
     171        CloseHandle(hFind)
     172
     173        m_FileAttributes = data.dwFileAttributes
     174        m_CreationTime = data.ftCreationTime
     175        m_LastAccessTime = data.ftLastAccessTime
     176        m_LastWriteTime = data.ftLastWriteTime
    180177    End Sub
    181178
    182179Private
    183     Function getFindFile(ByRef data As WIN32_FIND_DATA) As Boolean
    184         Dim hFind As HANDLE
    185         hFind = FindFirstFile(FullPath, data)
    186         If hFind = INVALID_HANDLE_VALUE Then
    187             Return False
    188         Else
    189             CloseHandle(hFind)
    190             Return True
    191         End If
    192     End Function
    193 
    194     '任意のファイル日時を変更する。flagsに、どの日時を変更するかを指定する。
    195     Function setFileTime(flags As _FileTimeType, ByRef value As DateTime) As Boolean
     180    Function setFileTime() As Boolean
    196181        Dim hFile As HANDLE
    197182        hFile = CreateFile(FullPath, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
    198183        If hFile = INVALID_HANDLE_VALUE Then
    199             setFileTime = FALSE
     184            setFileTime = False
    200185            Exit Function
    201186        End If
    202187
    203         Dim fileTime As FILETIME
    204         Dim results As Long
    205         fileTime = value.ToFileTimeUtc()
    206         Select Case flags
    207             Case _CreationTime
    208                 results = SetFileTime(hFile, fileTime, ByVal 0, ByVal 0)
    209             Case _LastAccessTime
    210                 results = SetFileTime(hFile, ByVal 0, fileTime, ByVal 0)
    211             Case _LastWriteTime
    212                 results = SetFileTime(hFile, ByVal 0, ByVal 0, fileTime)
    213         End Select
     188        If SetFileTime(hFile, m_CreationTime, m_LastAccessTime, m_LastWriteTime) Then
     189            setFileTime = True
     190        Else
     191            setFileTime = False
     192        End If
     193
    214194        CloseHandle(hFile)
    215 
    216         If results Then
    217             Return True
    218         Else
    219             Return False
    220         End If
    221195    End Function
    222196End Class
    223 
    224 Const Enum _FileTimeType
    225     _CreationTime
    226     _LastAccessTime
    227     _LastWriteTime
    228 End Enum
Note: See TracChangeset for help on using the changeset viewer.