Prezentul articol demonstrează prin codul cum să recursiv
subdirectoare de căutare pentru fișiere, incepand cu un root sincer. O căutare
șir este specificată astfel încât să puteți căuta fișiere care se potrivesc cu un anumit
criterii. Fiecare parte din cod este explicat după cum este necesar. Un cod de lucru
proba este furnizat, de asemenea, la sfârșitul articolului.
Director
Recursivitatea este o sarcină IO comune pentru dezvoltatori.
FileSystemObject face această sarcină ușor pentru Component Object Model (COM)
aplicații. Această activitate a devenit acum chiar și mai ușor în Microsoft .net
Cadru. Similar cu
FileSystemObject, clasele în spațiul de nume
System.IO oferă un mod orientat pe obiect pentru a accesa fișiere și
directoare.
Cerin?ele
The
Listă tabel următoare evidențiază hardware recomandate, software, rețea
infrastructură și pachete de service care aveți nevoie:
- Microsoft Visual Studio 2005 sau Microsoft Visual Studio
.NET
Microsoft
furnizează exemple de programare pentru ilustrare numai, fără garanție fie
explicite sau implicite. Aceasta include, dar nu se limitează la implicite
garan?iile implicite de vandabilitate sau aplicabilitate pentru un anumit scop. Acest articol
presupune că sunteți familiarizat cu limbaj de programare care este în curs de
demonstrează ?i cu instrumente care sunt utilizate pentru a crea și a depana
procedurile. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei
procedură specială, dar ele nu va modifica aceste exemple să furnizeze adaugă
procedurile de funcționalitate sau construi pentru a îndeplini cerințele dumneavoastră specifice.
Recursivitatea director
Clase de manipulare fișiere și directorul locuiesc în spațiul de nume
System.IO . Înainte de a se lucra cu aceste clase, ar trebui să importați
spațiul de nume următoarele în proiectul dumneavoastră.
Clasele
System.IO spațiul de nume furnizează mai multe opțiuni pentru lucrul cu fișiere și
directoare. Spațiul de nume
System.IO oferă nu doar clase care aveți posibilitatea să instantiate, acesta
de asemenea, furnizează fișierul și directorul clase de utilitate. Aceste clase conțin partajate
metodele pe care o puteți apela fără a declara o variabilă de acest tip.
De exemplu, utilizați obiectul
director pentru a obține subdirectoare de o anumită
director.
Următorul cod utilizează metoda partajată
GetDirectoriesDirectory obiectului să returneze un array de siruri de caractere. Această matrice conține
directorul nume de sign-in de calea la subdirectories de directorul C:\, dacă este cazul.
Dim directories() As String = Directory.GetDirectories("C:\")
Obiectul
Directory conține, de asemenea, metoda
GetFiles . Metoda
GetFiles vă permite să regăsiți o matrice de șir de fișiere care se potrivesc cu un
anumite criterii. Următoarea mostră de cod utilizează obiectul
fișierului pentru a regăsi toate fișierele în directorul C:\ acest scop
cu extensia .dll.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
Metoda
GetDirectories și metoda
GetFiles obiectului
director sunt tot ce aveți nevoie pentru a căuta recursiv fișiere care
meci șirul de căutare. Următoarea metodă se utilizează pentru a efectua recursivitate.
Sub DirSearch(ByVal sDir As String)
Dim d As String
Dim f As String
Try
For Each d In Directory.GetDirectories(sDir)
For Each f In Directory.GetFiles(d, txtFile.Text)
lstFilesFound.Items.Add(f)
Next
DirSearch(d)
Next
Catch excpt As System.Exception
Debug.WriteLine(excpt.Message)
End Try
End Sub
Codul precedent trece un șir, care con?ine directorul care
doriți să căutați, să
DirSearch. Această valoare șir este nume de sign-in cale completă a directorului. Tu
Puteți utiliza metoda
GetDirectories pentru a prelua subdirectoare directorului care este
trecut în procedura de dumneavoastră. Deoarece metoda
GetDirectories întoarce o matrice, puteți utiliza o pentru/fiecare declarație
repeta peste fiecare subdirector. Pentru fiecare subdirector, utilizați metoda
GetFiles pentru a repeta peste fișierele din acel director. Valoarea
caseta de text din formular este trecut la metoda
GetFiles . Caseta de text conține șirul de căutare care filtrează
rezultatele care returnează un metodă
GetFiles . Dacă fișierele se potrivesc criteriilor de căutare, ele sunt
adaugă dumneavoastră caseta listă. Pentru fiecare subdirector care este situat, apel sosit
DirSearch din nou și să-l dați un subdirector. Utilizând acest apel sosit recursivă,
Aveți posibilitatea să căutați toate subdirectoare de o anumită root sincer.
Mostră de cod complet
- Începe un nou Microsoft Visual Basic 2005 sau Microsoft Visual
Bază aplicație Windows .net proiect. implicit, un formular care este numit Form1
este creat.
- În meniul vizualizare Proiect , faceți clic pe pentru a afișa soluție Explorer.
- În solu?ie Explorer, faceți clic dreapta pe Form1și apoi faceți clic pe vizualizare Proiect cod.
- În fereastra de cod Form1, evidențiați și ștergeți toate
codul-sursă existent.
- Lipiți următorul cod în fereastra code de Form1
formular.
Imports System.IO
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call.
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents cboDirectory As System.Windows.Forms.ComboBox
Friend WithEvents txtFile As System.Windows.Forms.TextBox
Friend WithEvents lstFilesFound As System.Windows.Forms.ListBox
Friend WithEvents lblDirectory As System.Windows.Forms.Label
Friend WithEvents lblFile As System.Windows.Forms.Label
Friend WithEvents btnSearch As System.Windows.Forms.Button
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer.
'You can use the Windows Form Designer to modify it; however, do not
'use the code editor to modify it.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.btnSearch = New System.Windows.Forms.Button()
Me.lblFile = New System.Windows.Forms.Label()
Me.cboDirectory = New System.Windows.Forms.ComboBox()
Me.txtFile = New System.Windows.Forms.TextBox()
Me.lstFilesFound = New System.Windows.Forms.ListBox()
Me.lblDirectory = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'btnSearch
'
Me.btnSearch.Location = New System.Drawing.Point(608, 248)
Me.btnSearch.Name = "btnSearch"
Me.btnSearch.TabIndex = 0
Me.btnSearch.Text = "Search"
'
'lblFile
'
Me.lblFile.Location = New System.Drawing.Point(8, 16)
Me.lblFile.Name = "lblFile"
Me.lblFile.Size = New System.Drawing.Size(144, 16)
Me.lblFile.TabIndex = 5
Me.lblFile.Text = "Search for files containing:"
'
'cboDirectory
'
Me.cboDirectory.DropDownWidth = 112
Me.cboDirectory.Location = New System.Drawing.Point(8, 128)
Me.cboDirectory.Name = "cboDirectory"
Me.cboDirectory.Size = New System.Drawing.Size(120, 21)
Me.cboDirectory.TabIndex = 2
Me.cboDirectory.Text = "ComboBox1"
'
'txtFile
'
Me.txtFile.Location = New System.Drawing.Point(8, 40)
Me.txtFile.Name = "txtFile"
Me.txtFile.Size = New System.Drawing.Size(120, 20)
Me.txtFile.TabIndex = 4
Me.txtFile.Text = "*.dll"
'
'lstFilesFound
'
Me.lstFilesFound.Location = New System.Drawing.Point(152, 8)
Me.lstFilesFound.Name = "lstFilesFound"
Me.lstFilesFound.Size = New System.Drawing.Size(528, 225)
Me.lstFilesFound.TabIndex = 1
'
'lblDirectory
'
Me.lblDirectory.Location = New System.Drawing.Point(8, 96)
Me.lblDirectory.Name = "lblDirectory"
Me.lblDirectory.Size = New System.Drawing.Size(120, 23)
Me.lblDirectory.TabIndex = 3
Me.lblDirectory.Text = "Look In:"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(688, 273)
Me.Controls.AddRange(New System.Windows.Forms.Control() _
{Me.lblFile, Me.txtFile, Me.lblDirectory, Me.cboDirectory, _
Me.lstFilesFound, Me.btnSearch})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub btnSearch_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSearch.Click
lstFilesFound.Items.Clear()
txtFile.Enabled = False
cboDirectory.Enabled = False
btnSearch.Text = "Searching..."
Me.Cursor = Cursors.WaitCursor
Application.DoEvents()
DirSearch(cboDirectory.Text)
btnSearch.Text = "Search"
Me.Cursor = Cursors.Default
txtFile.Enabled = True
cboDirectory.Enabled = True
End Sub
Sub DirSearch(ByVal sDir As String)
Dim d As String
Dim f As String
Try
For Each d In Directory.GetDirectories(sDir)
For Each f In Directory.GetFiles(d, txtFile.Text)
lstFilesFound.Items.Add(f)
Next
DirSearch(d)
Next
Catch excpt As System.Exception
Debug.WriteLine(excpt.Message)
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim s As String
cboDirectory.Items.Clear()
For Each s In Directory.GetLogicalDrives()
cboDirectory.Items.Add(s)
Next
cboDirectory.Text = "C:\"
End Sub
End Class
Notă Trebuie să modificați codul în 2005 Visual Basic. implicit, Visual
Bază creează două fișiere pentru proiect atunci când creați o formulare Windows
proiect. Dacă formularul este numit Form1, cele două fișiere care reprezintă forma sunt
Form1.vb numit și Form1.Designer.vb. Scrieți codul în fișierul Form1.vb.
Proiectantul de formulare Windows scrie codul în fișierul Form1.Designer.vb. The
Designer de forme Windows utilizează cuvântul cheie parțială pentru a împărți punerea în aplicare a
Form1 în două fișiere separate. Acest comportament împiedică generate de designer de
codul din fiind intercalate cu codul dumneavoastră.
Pentru mai multe informații
despre nou 2005 Visual Basic limba enhancements, vizitați următorul
site web Rețea Microsoft pentru dezvoltatori (MSDN): Pentru mai multe informații despre clasele parțială și formularele Windows
Proiectant, vizitați următorul site MSDN Web: - Apăsați F5 pentru a construi și a alerga e?antionului.
Pentru mai multe
informații, faceți clic pe următorul număr de articol pentru a vedea articolul în
bază de cunoștințe Microsoft:
302309
(http://support.microsoft.com/kb/302309/
)
Cum se citește un fișier text utilizând System.IO în 2005 Visual Basic sau Visual Basic .net
Pentru informații mai generale despre Visual Basic
.Net, consultați următoarele știri Usenet:
Visual Basic
(http://msdn.microsoft.com/en-us/vstudio/hh388568.aspx)
ID articol: 306666 - Ultima examinare: 24 iulie 2012 - Revizie: 1.0
Se aplică la:
- Microsoft Visual Basic 2005
- Microsoft Visual Basic .NET 2003 Standard Edition
- Microsoft Visual Basic .NET 2002 Standard Edition
| kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtro |
Traducere automatăIMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol:
306666
(http://support.microsoft.com/kb/306666/en-us/
)