borderAndreaVB free resources for Visual Basic developersborder

AndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2008 Andrea Tincani
:: Count the number of files in a given directory

Author  

Andrea Tincani

Language  

VB5, VB6

Operating Systems  

Windows 95, 98 and NT
API Declarations

Option Explicit

'API constants
Public Const MAX_PATH = 260
Public Const INVALID_HANDLE_VALUE = -1
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10

'API types
Public Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Public 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 * 14
End Type

'API function calls
Public Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32.dll" (ByVal hFindFile As Long) As Long

Module

Public Function NumFiles(sPath As String) As Long
    Dim f As WIN32_FIND_DATA
    Dim hFile As Long

    NumFiles = 0
   
'Add the wildchar to the search path
    If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
    sPath = sPath & "*.*"
   
'start a file enum in the specified path
    hFile = FindFirstFile(sPath, f)
    If hFile = INVALID_HANDLE_VALUE Then Exit Function
   
'Exclude subdirectories from count
    If (f.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then NumFiles = 1
    Do While FindNextFile(hFile, f)
        If (f.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then NumFiles = NumFiles + 1
    Loop
   
'Close the file search
    FindClose (hFile)
End Function

Usage

'Usage:
Private Sub Command1_Click()
    MsgBox NumFiles("c:\") & " Files in C:\"
End Sub

:: Navigation

Home

Files and Disks Tips

Previous Tip

Next Tip

:: Search this site
Google
:: Related Topics
icon 12-02-2007 Excel chart to powerpoint by confusedbrat
icon 10-06-2006 Re: Why does this file-listing module produce duplicate filenames? by s_climax
icon 07-06-2006 Why does this file-listing module produce duplicate filenames? by s_climax
icon 29-05-2006 Read multiple files in a folder and count number of occurance of a word! by thedark123
icon 07-02-2006 Re: Programmatically set NTFS folder permissions. by Goran
:: Sponsored Links



Partners: Download Actual Software | Free Software Download | large format printing
borderAndreaVB free resources for Visual Basic developersborder

borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2008 Andrea Tincaniborder