Index: trunk/Include/Classes/System/IO/DirectoryInfo.ab
===================================================================
--- trunk/Include/Classes/System/IO/DirectoryInfo.ab	(revision 344)
+++ trunk/Include/Classes/System/IO/DirectoryInfo.ab	(revision 345)
@@ -10,5 +10,4 @@
 		OriginalPath = path
 		FullPath = Path.GetFullPath(path)
-		Refresh()
 	End Sub
 
@@ -160,22 +159,20 @@
 		find = FindFirstFile(ToTCStr(Path.Combine(FullPath, searchPattern)), findData)
 		If find = INVALID_HANDLE_VALUE Then
-			debug 'Exception
-			Return Nothing
+			Return New List<DirectoryInfo>
 		End If
 
 		Dim files As List<FileSystemInfo>
-		Dim i = 0 As Long
 		Do
-			If i > 1 Then
-				Dim s = New String(findData.cFileName As PCTSTR)
-				If (findData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
-					files.Add(New DirectoryInfo(Path.Combine(FullPath, s)))
-				Else
-					files.Add(New FileInfo(Path.Combine(FullPath, s)))
-				End If
+			Dim s = New String(findData.cFileName As PCTSTR)
+			If (findData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
+				files.Add(New DirectoryInfo(Path.Combine(FullPath, s)))
+			Else
+				files.Add(New FileInfo(Path.Combine(FullPath, s)))
 			End If
-			i++
 		Loop While FindNextFile(find, findData)
 		FindClose(find)
+
+		files.Remove(New DirectoryInfo(Path.Combine(FullPath, ".")))
+		files.Remove(New DirectoryInfo(Path.Combine(FullPath, "..")))
 
 		If GetLastError() = ERROR_NO_MORE_FILES Then
Index: trunk/Include/Classes/System/IO/FileInfo.ab
===================================================================
--- trunk/Include/Classes/System/IO/FileInfo.ab	(revision 344)
+++ trunk/Include/Classes/System/IO/FileInfo.ab	(revision 345)
@@ -9,5 +9,4 @@
 		OriginalPath = path
 		FullPath = Path.GetFullPath(path)
-		Refresh()
 	End Sub
 
Index: trunk/Include/Classes/System/IO/FileSystemInfo.ab
===================================================================
--- trunk/Include/Classes/System/IO/FileSystemInfo.ab	(revision 344)
+++ trunk/Include/Classes/System/IO/FileSystemInfo.ab	(revision 345)
@@ -8,8 +8,16 @@
 	m_LastWriteTime As FILETIME
 	m_FileAttributes As DWord
+
+	m_IsFreshed As Boolean
 Protected
 	FullPath As String
 	OriginalPath As String
 Public
+	Sub FileSystemInfo()
+		m_IsFreshed = False
+	End Sub
+
+	Sub ~FileSystemInfo()
+	End Sub
 
 	Override Function Equals( object As Object ) As Boolean
@@ -27,4 +35,5 @@
 	'Public Properties
 	Function Attributes() As DWord'FileAttributes
+		If Not m_IsFreshed Then Refresh()
 		Return m_FileAttributes
 	End Function
@@ -38,4 +47,5 @@
 
 	Function CreationTime() As DateTime
+		If Not m_IsFreshed Then Refresh()
 		Return DateTime.FromFileTime(m_CreationTime)
 	End Function
@@ -55,4 +65,5 @@
 
 	Function LastAccessTime() As DateTime
+		If Not m_IsFreshed Then Refresh()
 		Return DateTime.FromFileTime(m_LastAccessTime)
 	End Function
@@ -72,4 +83,5 @@
 
 	Function LastWriteTime() As DateTime
+		If Not m_IsFreshed Then Refresh()
 		Return DateTime.FromFileTime(m_LastWriteTime)
 	End Function
@@ -89,4 +101,5 @@
 
 	Function Exists() As Boolean
+		If Not m_IsFreshed Then Refresh()
 		If m_FileAttributes = 0 Then
 			Return False
@@ -128,4 +141,5 @@
 Private
 	Sub setFileTime()
+		If Not m_IsFreshed Then Refresh()
 		Dim hFile = CreateFile(ToTCStr(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
