CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3

Thread: Find a file

  1. #1
    Join Date
    Jul 2001
    Location
    maharashtra,india
    Posts
    181

    Find a file

    hi
    i want to find a particular file
    is there any code that can do it for me
    like i will just pass the file name and it will give me full path of it
    thanx


  2. #2
    Join Date
    May 2001
    Location
    Canada
    Posts
    182

    Re: Find a file

    Hi,
    You can use Dir function. The FileSystemObject class gives better performance than using such Visual Basic intrinsic functions as Dir and GetAttr, and is much simpler to implement.

    =========

    Option Explicit
    Dim fso As New FileSystemObject
    Dim fld As Folder

    Private Sub Command1_Click()
    Dim nDirs As Integer, nFiles As Integer, lSize As Long
    Dim sDir As String, sSrchString As String
    sDir = InputBox("Please enter the directory to search", _
    "FileSystemObjects example", "C:\")
    sSrchString = InputBox("Please enter the file name to search", _
    "FileSystemObjects example", "vb.ini")
    MousePointer = vbHourglass
    Label1.Caption = "Searching " & vbCrLf & UCase(sDir) & "..."
    lSize = FindFile(sDir, sSrchString, nDirs, nFiles)
    MousePointer = vbDefault
    MsgBox Str(nFiles) & " files found in" & Str(nDirs) & _
    " directories", vbInformation
    MsgBox "Total Size = " & lSize & " bytes"
    End Sub

    Private Function FindFile(ByVal sFol As String, sFile As String, _
    nDirs As Integer, nFiles As Integer) As Long
    Dim tFld As Folder, tFil As File, FileName As String

    Set fld = fso.GetFolder(sFol)
    FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
    vbHidden Or vbSystem Or vbReadOnly)
    While Len(FileName) <> 0
    FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, _
    FileName))
    nFiles = nFiles + 1
    List1.AddItem fso.BuildPath(fld.Path, FileName) ' Load ListBox
    FileName = Dir() ' Get next file
    DoEvents
    Wend
    Label1 = "Searching " & vbCrLf & fld.Path & "..."
    nDirs = nDirs + 1
    If fld.SubFolders.Count > 0 Then
    For Each tFld In fld.SubFolders
    DoEvents
    FindFile = FindFile + FindFile(tFld.Path, sFile, nDirs, _
    nFiles)
    Next
    End If
    End Function
    ==========

    For more information, look up MSDN: "HOWTO: Recursively Search Directories Using FileSystemObject"


    Regards,

    Michi

  3. #3
    Join Date
    May 2000
    Location
    New York, NY, USA
    Posts
    2,878

    Re: Find a file

    To use this code, call FindFile, passing in the root path and filename. The function returns the full and
    completed path - or a null string if nothing was found.

    Usage

    MsgBox FindFile("c:\", "NWind.mdb")
    Code

    Declare Function SearchTreeForFile Lib "IMAGEHLP.DLL" _
    (ByVal lpRootPath As String, _
    ByVal lpInputName As String, _
    ByVal lpOutputName As String) As Long

    Public Const MAX_PATH = 260

    Public Function FindFile(RootPath As String, _
    FileName As String) As String

    Dim lNullPos As Long
    Dim lResult As Long
    Dim sBuffer As String

    On Error GoTo FileFind_Error

    'Allocate buffer
    sBuffer = Space(MAX_PATH * 2)

    'Find the file
    lResult = SearchTreeForFile(RootPath, FileName, sBuffer)

    'Trim null, if exists
    If lResult Then
    lNullPos = InStr(sBuffer, vbNullChar)
    If Not lNullPos Then
    sBuffer = Left(sBuffer, lNullPos - 1)
    End If
    'Return filename
    FindFile = sBuffer
    Else
    'Nothing found
    FindFile = vbNullString
    End If

    Exit Function

    FileFind_Error:
    FindFile = vbNullString

    End Function
    Tip by Karl Moore


    Iouri Boutchkine
    [email protected]
    Iouri Boutchkine
    [email protected]

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured