DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 306666 - Última revisão: terça-feira, 24 de julho de 2012 - Revisão: 1.0

 
Este artigo foi publicado anteriormente em BR306666
Para um Microsoft Visual C++ 2005 e Microsoft Visual C++ .net versão deste artigo, consulte 307009  (http://support.microsoft.com/kb/307009/ ) .
Para um Microsoft Visual C# 2005 e Microsoft Visual C# .net versão deste artigo, consulte 303974  (http://support.microsoft.com/kb/303974/ ) .

Nesta página

Sumário

Este artigo demonstra através de código como recursivamente pesquisa as subpastas de arquivos, iniciando com um diretório raiz. Uma pesquisa seqüência de caracteres especificada para que você pode pesquisar por arquivos que correspondam a um determinado critérios. Cada parte do código é explicado conforme necessário. Um código de trabalho exemplo também é fornecido no final do artigo.

Diretório recursão é uma tarefa comum para desenvolvedores de IO. O FileSystemObject torna essa tarefa fácil para o modelo de objeto componente (COM) aplicativos. Agora essa tarefa se tornou ainda mais fácil em Microsoft .net Framework. Semelhante ao FileSystemObject, as classes no namespace System. IO oferecem uma maneira orientada a objeto acessar arquivos e diretórios.

Requisitos

O lista a seguir descreve o hardware recomendado, software, rede infra-estrutura e service packs que você precisa:
  • Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET
Microsoft fornece exemplos de programação apenas para ilustração, sem garantia ou expressa ou implícita. Isso inclui, mas não está limitado a, a garantias de comercialização ou adequação para uma finalidade específica. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos fornecer adicionado funcionalidade ou construir procedimentos para atender a necessidades específicas.

Recursão de diretório

As classes de manipulação de arquivos e diretórios residem no namespace System. IO . Antes de trabalhar com essas classes, você deve importar o seguinte namespace no seu projeto.
using System.IO;
				
As classes do namespace System. IO oferecem várias opções para trabalhar com arquivos e diretórios. O namespace System. IO não apenas fornece classes que você pode instanciar- também fornece classes de utilitário de arquivo e diretório. Essas classes contêm compartilhada métodos que você pode chamar sem precisar declarar uma variável desse tipo. Por exemplo, você pode usar o objeto de diretório para obter os subdiretórios de um determinado diretório.

O código a seguir usa o método GetDirectories compartilhado do objeto de diretório para retornar uma matriz de seqüências. Esta matriz contém nomes de caminho do diretório para os subdiretórios do diretório C:\, se houver.
Dim directories() As String = Directory.GetDirectories("C:\")
				
O objeto de diretório também contém o método GetFiles . O método GetFiles permite recuperar uma matriz de seqüência de arquivos que correspondem a um determinados critérios. O exemplo de código a seguir usa o objeto de arquivo para recuperar todos os arquivos no diretório C:\ final com uma extensão. dll.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
O método GetDirectories e o método GetFiles do objeto de diretório são tudo o que você precisa pesquisar recursivamente arquivos que corresponde a seqüência de pesquisa. O método a seguir é usado para executar a recursão.
    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
				
O código anterior passa uma seqüência de caracteres que contém o diretório que você deseja pesquisar, para DirSearch. Esse valor é o nome do caminho completo do diretório. Você pode usar o método GetDirectories para recuperar os subdiretórios do diretório é passado para o procedimento. O método GetDirectories retorna uma matriz, você pode usar um para/cada instrução itere cada subdiretório. Para cada subdiretório, use o método GetFiles para iterar sobre os arquivos nesse diretório. O valor de a caixa de texto no seu formulário é passada para o método GetFiles . Na caixa de texto contém a seqüência de pesquisa filtra o resultados que o método GetFiles retorna. Se quaisquer arquivos correspondem aos critérios de pesquisa, eles são adicionado à caixa de listagem. Para cada subdiretório está localizado, chame DirSearch novamente e passe um subdiretório. Usando essa chamada recursiva, Você pode pesquisar todos os subdiretórios de um diretório raiz determinado.

Exemplo de código completo

  1. Iniciar um novo Microsoft Visual Basic 2005 ou Microsoft Visual Projeto básico de aplicativo do Windows .net. Por padrão, um formulário é denominado Form1 é criado.
  2. No menu Exibir , clique para exibir o Solution Explorer.
  3. No Solution Explorer, clique em Form1e clique em Exibir código.
  4. Na janela de código Form1, realce e exclua todos os código existente.
  5. Cole o seguinte código na janela de código do Form1. formulário.
    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
    					
    Observação Você deve alterar o código no Visual Basic 2005. Por padrão, Visual Basic cria dois arquivos para o projeto quando você cria um Windows Forms projeto. Se o formulário é denominado Form1, os dois arquivos que representam o formulário são chamado Form1. vb e Form1. Escrever o código no arquivo Form1. vb. O Windows Forms Designer escreve o código no arquivo Form1. O Windows Forms Designer usa a palavra-chave partial para dividir a implementação de Form1 em dois arquivos separados. Esse comportamento impede que o gerado pelo designer código sendo intercaladas com seu código.

    Para obter mais informações sobre os novos aprimoramentos de linguagem Visual Basic 2005, visite o seguinte Web site da 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)
    Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx (http://msdn2.microsoft.com/en-us/library/ms171843.aspx)
  6. Pressione F5 para compilar e executar a amostra.

Referências

Para obter mais informações informações, clique no número abaixo para ler o artigo no Base de dados de Conhecimento da Microsoft:
302309  (http://support.microsoft.com/kb/302309/ ) Como ler um arquivo de texto usando System. IO Visual Basic 2005 ou .net Visual Basic
Para obter mais informações sobre Visual Basic .NET, consulte o seguinte grupo de notícias Usenet:
Visual Basic (http://msdn.microsoft.com/en-us/vstudio/hh388568.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palavras-chave: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306666  (http://support.microsoft.com/kb/306666/en-us/ )
Compartilhar

Artigos relacionados

Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store