DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 306666 - Ultima modifica: martedì 24 luglio 2012 - Revisione: 1.0

 
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I306666
Microsoft Visual C++ 2005 e Microsoft Visual Versione di questo articolo relativa C++. 307009  (http://support.microsoft.com/kb/307009/ ) .
Microsoft Visual C# 2005 e Microsoft Visual Versione di questo articolo relativa C#. 303974  (http://support.microsoft.com/kb/303974/ ) .

In questa pagina

Sommario

In questo articolo viene illustrato tramite il codice in modo ricorsivo come ricerca nelle sottodirectory per i file, a partire da una directory principale. Una ricerca viene specificata la stringa in modo che è possibile eseguire la ricerca per i file che corrispondono a un determinato criteri. Ogni parte di codice viene illustrato come necessario. Un codice di lavoro esempio inoltre viene fornito alla fine dell'articolo.

Directory la ricorsione è una comune attività dei / O per gli sviluppatori. FileSystemObject semplifica questa operazione per Component Object Model (COM) applicazioni. Ora questa attività è diventata ancora più semplice in .net di Microsoft Framework. Analogamente a FileSystemObject, le classi dello spazio dei nomi System. IO forniscono un modo orientato per accedere ai file e Directory.

Requisiti

Il Nell'elenco che segue vengono indicati l'hardware consigliato, software, rete infrastruttura e i service Pack necessari:
  • Microsoft Visual Studio 2005 o Microsoft Visual Studio .NET
Microsoft fornisce esempi di programmazione illustrativo, senza alcuna garanzia o espressa o implicita. Questo include, ma non è limitato a, l'implicita garanzia di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che abbia familiarità con il linguaggio di programmazione che si sta dimostrazione e gli strumenti utilizzati per creare ed eseguire il debug procedure. I tecnici del supporto Microsoft possono spiegare la funzionalità di un particolare procedura, ma non modificare questi esempi per fornire aggiunto procedure di costruzione o funzionalità per soddisfare specifiche esigenze.

Ricorsione delle directory

Le classi di manipolazione di file e directory risiedono nello spazio dei nomi System. IO . Prima di utilizzare queste classi, è consigliabile importare lo spazio dei nomi seguente nel progetto.
using System.IO;
				
Le classi dello spazio dei nomi System. IO offrono numerose opzioni per l'utilizzo di file e Directory. Lo spazio dei nomi System. IO non solo fornisce classi che è possibile creare un'istanza, fornisce anche classi di utilità per file e directory. Tali classi contengono condivisa metodi che è possibile chiamare senza dover dichiarare una variabile di quel tipo. Ad esempio, è possibile utilizzare l'oggetto Directory per ottenere le sottodirectory di una determinata Directory.

Il codice seguente utilizza il metodo GetDirectories condiviso dell'oggetto Directory per restituire una matrice di stringhe. Questa matrice contiene i percorsi di directory nelle sottodirectory della directory C:\, se presente.
Dim directories() As String = Directory.GetDirectories("C:\")
				
L'oggetto Directory contiene anche il metodo GetFiles . Il metodo GetFiles consente di recuperare una matrice di stringhe dei file che corrispondono a un determinati criteri. Nell'esempio di codice utilizza l'oggetto File per recuperare tutti i file che terminano nella directory C:\ con estensione dll.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
Il metodo GetDirectories e il metodo GetFiles dell'oggetto Directory sono tutte necessarie per la ricerca ricorsiva di file che corrisponde alla stringa di ricerca. Il metodo riportato di seguito viene utilizzato per eseguire la ricorsione.
    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
				
Il codice precedente passa una stringa che contiene la directory che Per effettuare la ricerca per DirSearch. Questo valore stringa è il nome di percorso completo della directory. Si Consente di recuperare le sottodirectory della directory che è il metodo GetDirectories passato nella routine. Poiché il metodo GetDirectories restituisce una matrice, è possibile utilizzare un for/each dell'istruzione iterazione in ogni sottodirectory. Per ogni sottodirectory, utilizzare il metodo GetFiles per scorrere i file nella directory. Il valore di la casella di testo sul form viene passata al metodo GetFiles . La casella di testo contiene la stringa di ricerca che filtra il risultati restituito dal metodo GetFiles . Se tutti i file corrisponderanno ai criteri di ricerca, sono aggiunto alla casella di riepilogo. Per ogni sottodirectory individuata, chiamare di nuovo DirSearch e passarlo in una sottodirectory. Utilizzando la chiamata ricorsiva, è possibile cercare tutte le sottodirectory di una determinata directory radice.

Nell'esempio di codice completo

  1. Avviare un nuovo Microsoft Visual Basic 2005 o Microsoft Visual Base del progetto applicazione Windows.. Per impostazione predefinita, un form denominato Form1 viene creato.
  2. Dal menu Visualizza , fare clic per visualizzare Esplora soluzioni.
  3. In Esplora soluzioni, destro Form1e quindi scegliere Visualizza codice.
  4. Nella finestra del codice Form1 evidenziare e quindi eliminare tutto il codice esistente.
  5. Incollare il codice seguente nella finestra del codice di Form1 modulo.
    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
    					
    Nota È necessario modificare il codice in Visual Basic 2005. Per impostazione predefinita, Visual Basic crea due file per il progetto quando si crea un Windows Form progetto. Se il form denominato Form1, sono i due file che rappresentano il form denominato Form1. vb e Form1. È possibile scrivere il codice nel file Form1. vb. Progettazione Windows Form scrive il codice nel file Form1. Il Progettazione Windows Form utilizza la parola chiave partial per dividere l'implementazione di Form1 in due file separati. Questo comportamento impedisce il generato codice da venga frammisto al codice.

    Per ulteriori informazioni i nuovi miglioramenti apportati lingua Visual Basic 2005, visitare il seguente Sito Web Microsoft Developer Network (MSDN):
    aspx http://msdn.microsoft.com/en-us/library/ms379584 (VS. 80) (http://msdn.microsoft.com/en-us/library/ms379584(VS.80).aspx)
    Per ulteriori informazioni sulle classi parziali e Windows Form Progettazione, visitare il seguente sito Web MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx (http://msdn2.microsoft.com/en-us/library/ms171843.aspx)
  6. Premere F5 per generare ed eseguire l'esempio.

Riferimenti

Per ulteriori informazioni informazioni, fare clic sul numero dell'articolo riportato di seguito per visualizzare il corrispondente articolo della Microsoft Knowledge Base:
302309  (http://support.microsoft.com/kb/302309/ ) Come leggere un file di testo utilizzando System. IO in Visual Basic 2005 o in Visual Basic .net
Per ulteriori informazioni generali su Visual Basic .NET, vedere il seguente newsgroup Usenet:
Visual Basic (http://msdn.microsoft.com/en-us/vstudio/hh388568.aspx)

Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Chiavi: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 306666  (http://support.microsoft.com/kb/306666/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store