Index: /Include/Classes/System/IO/FileSystemInfo.ab
===================================================================
--- /Include/Classes/System/IO/FileSystemInfo.ab	(revision 83)
+++ /Include/Classes/System/IO/FileSystemInfo.ab	(revision 84)
@@ -1,3 +1,7 @@
 Class FileSystemInfo
+	m_CreationTime As FILETIME
+	m_LastAccessTime As FILETIME
+	m_LastWriteTime As FILETIME
+	m_FileAttributes As DWord
 Protected
 	FullPath As String
@@ -6,11 +10,5 @@
 	'Public Properties
 	Function Attributes() As FileAttributes
-		Dim data As WIN32_FIND_DATA
-		If getFindFile(data) = False Then
-			'Exception
-			Debug
-			Exit Function
-		End If
-		Select Case data.dwFileAttributes
+		Select Case m_FileAttributes
 			Case FILE_ATTRIBUTE_ARCHIVE
 				Return Archive
@@ -77,14 +75,10 @@
 
 	Function CreationTime() As DateTime
-		Dim data As WIN32_FIND_DATA
-		If getFindFile(data) = False Then
-			'Exception
-			Debug
-		End If
-		Return DateTime.FromFileTime(data.ftCreationTime)
+		Return DateTime.FromFileTime(m_CreationTime)
 	End Function
 
 	Sub CreationTime(ByRef value As DateTime)
-		If setFileTime(_CreationTime, value) = FALSE Then
+		m_CreationTime = value.ToFileTimeUtc()
+		If setFileTime() = False Then
 			'Exception
 			debug
@@ -102,14 +96,10 @@
 
 	Function LastAccessTime() As DateTime
-		Dim data As WIN32_FIND_DATA
-		If getFindFile(data) = False Then
-			'Exception
-			Debug
-		End If
-		Return DateTime.FromFileTime(data.ftLastAccessTime)
+		Return DateTime.FromFileTime(m_LastAccessTime)
 	End Function
 
 	Sub LastAccessTime(ByRef value As DateTime)
-		If setFileTime(_LastAccessTime, value) = FALSE Then
+		m_LastAccessTime = value.ToFileTimeUtc()
+		If setFileTime() = False Then
 			'Exception
 			debug
@@ -127,14 +117,10 @@
 
 	Function LastWriteTime() As DateTime
-		Dim data As WIN32_FIND_DATA
-		If getFindFile(data) = False Then
-			'Exception
-			Debug
-		End If
-		Return DateTime.FromFileTime(data.ftLastWriteTime)
+		Return DateTime.FromFileTime(m_LastWriteTime)
 	End Function
 
 	Sub LastWriteTime(ByRef value As DateTime)
-		If setFileTime(_LastWriteTime, value) = FALSE Then
+		m_LastWriteTime = value.ToFileTimeUtc()
+		If setFileTime() = False Then
 			'Exception
 			debug
@@ -152,6 +138,9 @@
 
 	Function Exists() As Boolean
-		Dim data As WIN32_FIND_DATA
-		Return getFindFile(data)
+		If m_FileAttributes = 0 Then
+			Return False
+		Else
+			Return True
+		End If
 	End Function
 
@@ -176,53 +165,32 @@
 	End Sub
 
-	'未実装
 	Sub Refresh()
+		Dim data As WIN32_FIND_DATA
+		Dim hFind As HANDLE
+		hFind = FindFirstFile(FullPath, data)
+		CloseHandle(hFind)
+
+		m_FileAttributes = data.dwFileAttributes
+		m_CreationTime = data.ftCreationTime
+		m_LastAccessTime = data.ftLastAccessTime
+		m_LastWriteTime = data.ftLastWriteTime
 	End Sub
 
 Private
-	Function getFindFile(ByRef data As WIN32_FIND_DATA) As Boolean
-		Dim hFind As HANDLE
-		hFind = FindFirstFile(FullPath, data)
-		If hFind = INVALID_HANDLE_VALUE Then
-			Return False
-		Else
-			CloseHandle(hFind)
-			Return True
-		End If
-	End Function
-
-	'任意のファイル日時を変更する。flagsに、どの日時を変更するかを指定する。
-	Function setFileTime(flags As _FileTimeType, ByRef value As DateTime) As Boolean
+	Function setFileTime() As Boolean
 		Dim hFile As HANDLE
 		hFile = CreateFile(FullPath, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
 		If hFile = INVALID_HANDLE_VALUE Then
-			setFileTime = FALSE
+			setFileTime = False
 			Exit Function
 		End If
 
-		Dim fileTime As FILETIME
-		Dim results As Long
-		fileTime = value.ToFileTimeUtc()
-		Select Case flags
-			Case _CreationTime
-				results = SetFileTime(hFile, fileTime, ByVal 0, ByVal 0)
-			Case _LastAccessTime
-				results = SetFileTime(hFile, ByVal 0, fileTime, ByVal 0)
-			Case _LastWriteTime
-				results = SetFileTime(hFile, ByVal 0, ByVal 0, fileTime)
-		End Select
+		If SetFileTime(hFile, m_CreationTime, m_LastAccessTime, m_LastWriteTime) Then
+			setFileTime = True
+		Else
+			setFileTime = False
+		End If
+
 		CloseHandle(hFile)
-
-		If results Then
-			Return True
-		Else
-			Return False
-		End If
 	End Function
 End Class
-
-Const Enum _FileTimeType
-	_CreationTime
-	_LastAccessTime
-	_LastWriteTime
-End Enum
