FilesToArray – Read all the files or subdirectories in a directory using API functions

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _    (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As LongPrivate Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _    (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As LongPrivate Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As _    LongConst MAX_PATH = 260Private Type FILETIME    dwLowDateTime As Long    dwHighDateTime As LongEnd TypePrivate Type WIN32_FIND_DATA    dwFileAttributes As Long    ftCreationTime As FILETIME    ftLastAccessTime As FILETIME    ftLastWriteTime As FILETIME    nFileSizeHigh As Long    nFileSizeLow As Long    dwReserved0 As Long    dwReserved1 As Long    cFileName As String * MAX_PATH    cAlternate As String * 14End Type' Returns a one-based string array containing the files (or directories)' located in the specified path'' the Path argument can contain wildcards, e.g. "C:*.doc")Function FilesToArray(ByVal Path As String, Optional ByVal IncludeDirs As _    Boolean) As String()    Dim lRet As Long    Dim handle As Long    Dim FindData As WIN32_FIND_DATA    Dim FileName As String    Dim fileCount As Long    Dim ok As Boolean    ReDim res(0) As String        ' start the searching, exit if no file matches the spec    handle = FindFirstFile(Path, FindData)    If handle < 0 Then        FilesToArray = res()        Exit Function    End If            Do        ' get this entry's name        FileName = Left$(FindData.cFileName, InStr(FindData.cFileName, _            vbNullChar) - 1)                If (FindData.dwFileAttributes And vbDirectory) = 0 Then            ' this is a file            ok = Not IncludeDirs        ElseIf FileName <> "." And FileName <> ".." Then            ' this is a directory, but not a ./.. entry            ok = IncludeDirs        Else            ' this is a ./.. entry            ok = False        End If                    If ok Then            ' add this entry to the result            fileCount = fileCount + 1            If fileCount > UBound(res) Then                ' make room in the array if necessary                ReDim Preserve res(fileCount + 100) As String            End If            res(fileCount) = FileName        End If        ' read the next file, returns zero when there are no more files        lRet = FindNextFile(handle, FindData)    Loop While lRet    ' stop enumeration    FindClose handle        ' discard unused array items and return to caller    ReDim Preserve res(0 To fileCount) As String    FilesToArray = resEnd Function

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


The Latest

microsoft careers

Top Careers at Microsoft

Microsoft has gained its position as one of the top companies in the world, and Microsoft careers are flourishing. This multinational company is efficiently developing popular software and computers with other consumer electronics. It is a dream come true for so many people to acquire a high paid, high-prestige job

your company's audio

4 Areas of Your Company Where Your Audio Really Matters

Your company probably relies on audio more than you realize. Whether you’re creating a spoken text message to a colleague or giving a speech, you want your audio to shine. Otherwise, you could cause avoidable friction points and potentially hurt your brand reputation. For example, let’s say you create a

chrome os developer mode

How to Turn on Chrome OS Developer Mode

Google’s Chrome OS is a popular operating system that is widely used on Chromebooks and other devices. While it is designed to be simple and user-friendly, there are times when users may want to access additional features and functionality. One way to do this is by turning on Chrome OS