Index: trunk/Include/Classes/System/IO/DirectoryInfo.ab
===================================================================
--- trunk/Include/Classes/System/IO/DirectoryInfo.ab	(revision 300)
+++ trunk/Include/Classes/System/IO/DirectoryInfo.ab	(revision 318)
@@ -1,2 +1,3 @@
+Imports System.Collections.Generic
 
 Namespace System
@@ -17,11 +18,9 @@
 	'Public Property
 	Function Parent() As DirectoryInfo
-		Dim dirInfo As DirectoryInfo(Path.GetDirectoryName(FullPath))
-		Return dirInfo
+		Return New DirectoryInfo(Path.GetDirectoryName(FullPath))
 	End Function
 
 	Function Root() As DirectoryInfo
-		Dim dirInfo As DirectoryInfo(Path.GetPathRoot(FullPath))
-		Return dirInfo
+		Return New DirectoryInfo(Path.GetPathRoot(FullPath))
 	End Function
 
@@ -75,27 +74,91 @@
 	End Function*/
 
-/*	Function GetDirectories() As Array
+	Function GetDirectories() As List<DirectoryInfo>
+		Return GetDirectories("?*")
+	End Function
+
+	Function GetDirectories(searchPattern As String) As List<DirectoryInfo>
+		Dim infos As List<FileSystemInfo>
+		infos = GetFileSystemInfos(searchPattern)
+
+		Dim dirs As List<DirectoryInfo>
+		Dim i As Long
+		For i = 0 To ELM(infos.Count)
+			If infos[i].GetType.ToString() = "DirectoryInfo" Then
+				dirs.Add(infos[i] As DirectoryInfo)
+			End If
+		Next
+		Return dirs
+	End Function
+
+/*	Function GetDirectories(searchPattern As String, searchOption As SearchOption) As List<DirectoryInfo>
+		If searchOption = SearchOption.TopDirectoryOnly Then
+			Return GetDirectories(searchPattern)
+		Else
+			Dim dirs As List<DirectoryInfo>
+			dirs = GetDirectories(searchPattern)
+			Dim i As Long
+
+		End If
 	End Function*/
 
-/*	Function GetDirectories(searchPattern As String) As Array
+	Function GetFiles() As List<FileInfo>
+		Return GetFiles("?*")
+	End Function
+
+	Function GetFiles(searchPattern As String) As List<FileInfo>
+		Dim infos As List<FileSystemInfo>
+		infos = GetFileSystemInfos(searchPattern)
+
+		Dim files As List<FileInfo>
+		Dim i As Long
+		For i = 0 To ELM(infos.Count)
+			If infos[i].GetType.ToString() = "FileInfo" Then
+				files.Add(infos[i] As FileInfo)
+			End If
+		Next
+		Return files
+	End Function
+
+/*	Function GetFiles(searchPattern As String, searchOption As SearchOption) As List<FileInfo>
 	End Function*/
 
-/*	Function GetDirectories(searchPattern As String, searchOption As SearchOption) As Array
-	End Function*/
+	Function GetFileSystemInfos() As List<FileSystemInfo>
+		Return GetFileSystemInfos("?*")
+	End Function
 
-/*	Function GetFiles() As Array
-	End Function*/
+	Function GetFileSystemInfos(searchPattern As String) As List<FileSystemInfo>
+		Dim find As HANDLE
+		Dim findData As WIN32_FIND_DATA
+		find = FindFirstFile(ToTCStr(Path.Combine(FullPath, searchPattern)), findData)
+		If find = INVALID_HANDLE_VALUE Then
+			debug 'Exception
+			Return Nothing
+		End If
 
-/*	Function GetFiles(searchPattern As String) As Array
-	End Function*/
+		Dim files As List<FileSystemInfo>
+		Dim lastError = GetLastError() As DWord
+		Dim i As Long
+		While lastError <> ERROR_NO_MORE_FILES
+			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
+			End If
 
-/*	Function GetFiles(searchPattern As String, searchOption As SearchOption) As Array
-	End Function*/
-
-/*	Function GetFileSystemInfos() As Array
-	End Function*/
-
-/*	Function GetFileSystemInfos(searchPattern As String) As Array
-	End Function*/
+			If FindNextFile(find, findData) = False Then
+				lastError = GetLastError()
+				If lastError <> ERROR_NO_MORE_FILES Then
+					debug 'Exception
+					Return Nothing
+				End If
+			End If
+			i++
+		Wend
+		Return files
+	End Function
 
 	Sub MoveTo(destDirName As String)
@@ -110,9 +173,4 @@
 End Class
 
-Enum SearchOption
-	AllDirectories
-	TopDirectoryOnly
-End Enum
-
 End Namespace
 End Namespace
