Makale numarası: 185601 - Son Gözden Geçirme: 13 Mayıs 2003 Salı - Gözden geçirme: 2.0

NASıL YAPıLıR: FileSystemObject kullanarak özyinelemeli olarak arama dizinleri

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu adım adım makalede özyinelemeli olarak arama dizinlerinin FileSystemObject sınıfını kullanın ve belirli dosyaları bulmak için gösterilmiştir.

FileSystemObject sınıfı hakkında bilgi

FileSystemObject sınıf, çalıştırma Microsoft komut dosyası çalıştırma modülünün (Scrrun.dll) bulunur. Scrrun.dll dosyasını edinmek için <a0></a0>, aşağıdaki paketlerinden birini yükleyin:
  • Microsoft Windows Script Host
  • Microsoft Windows NT Option Pack
  • Microsoft ınternet ınformation Server 3.0
  • 3.1 Yükseltme komut dosyası
  • Microsoft Visual Studio 98
  • Microsoft Visual Basic 6.0
FileSystemObject sınıfı daha iyi performans sağlar dan Visual Basic gibi dizini ve GetAttr iç işlevlerini kullanın. Ayrıca, FileSystemObject, uygulamak çok daha kolaydır Visual Basic iç işlevleri.

Örnek oluşturma

  1. Yeni bir proje standart exe DOSYASı, Visual Basic'te oluşturun. Varsayılan olarak, Form1 oluşturulur.
  2. Proje menüsünde Başvurular ' ı tıklatın ve sonra da Microsoft Scripting çalışma zamanı başvuru ekleyin. Bu seçenek listede yoksa, sisteminizdeki Scrrun.dll dosyasını bulun. Gerekiyorsa, bu Information About the FileSystemObject Class bölümünde listelenen araçlardan birini yükleyin.
  3. Form1'e, bir KomutDüğmesi, Etiket ve bir liste kutusu denetimi ekleyin. Etiket denetimi genişliğini formun genişliğini aynı şekilde ayarlanır.
  4. Form1 genel Tanımlamalar bölümüne aşağıdaki kodu ekleyin:
    Option Explicit
    
    Dim fso As New FileSystemObject
    Dim fld As Folder
    
    Private Sub Command1_Click()
       Dim nDirs As Long, nFiles As Long, lSize As Currency
       Dim sDir As String, sSrchString As String
       sDir = InputBox("Type the directory that you want to search for", _
                       "FileSystemObjects example", "C:\")
       sSrchString = InputBox("Type the file name that you want to search for", _
                       "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 Long, nFiles As Long) As Currency
       Dim tFld As Folder, tFil As File, FileName As String
       
       On Error GoTo Catch
       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
       Exit Function
    Catch:  FileName = ""
           Resume Next
    End Function
    					
  5. Projeyi çalıştırın ve Command1</a1>'ı tıklatın.
  6. Dizin ve dosya adını aramak için yazın. Her dosya bulunduğunda, liste kutusuna dosya adının eklendiğini dikkat edin. Işlem tamamlandığında, bulunan dosya sayısı, bir ileti kutusunda görüntülenir. Dosyaların toplam boyutunu da görüntülenir.

SORUN GİDERME

  • Bir uygulama, bunları erişmeye çalışırsa, bazı dosya ve dizinleri, Microsoft Windows XP'de, sistem birim bilgisi gibi erişim ihlaline neden. Hata kodu, bir sorun ortaya çıktığında bir dizinde arama durur. Gerekiyorsa, daha güçlü bir geçici çözüm, farklı bir yaklaşım kullanmanız gerekir.
  • Bir dosya süzgeci'ni kullanırsanız (gibi *. *), çok sayıda dosya döndürdü. Liste kutusu denetimi, yalnızca sınırlı sayıda karakter içerebilir. Daha fazla girdi yok, bu sınıra ulaşıldığında, liste kutusuna eklenir.
  • Bu kod örneği, Microsoft Scripting çalışma zamanı'nı (Scrrun.dll) 5.6.0.6626 sürümünü kullanarak sınanmıştır. Sorunları oluşursa, bu dosyanın daha yeni bir sürümünü karşıdan yüklemek zorunda kalabilirsiniz.

Referanslar

Belirli bir dosyayı bulmak için kullanabileceğiniz diğer yöntemler hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
185476  (http://support.microsoft.com/kb/185476/EN-US/ ) Nasıl YAPıLıR: Arama dizinlerini Find veya listesi dosyaları

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Anahtar Kelimeler: 
kbmt kbhowto kbhowtomaster KB185601 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:185601  (http://support.microsoft.com/kb/185601/en-us/ )