2005 Visual Basic 또는 Visual Basic.net을 사용 하 여 재귀적으로 검색 디렉터리 방법

기술 자료 번역 기술 자료 번역
기술 자료: 306666 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR306666
Microsoft Visual c + + 2005 및 Microsoft Visual에 대 한 C + +.net 버전의이 문서를 참조 하십시오. 307009.
Microsoft Visual C# 2005 및 Microsoft Visual에 대 한 C#.net 버전의이 문서를 참조 하십시오. 303974.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 코드를 통해 보여줍니다 재귀적 방법 파일을 루트 디렉터리에서 하위 디렉터리를 검색 합니다. 검색 문자열을 검색할 수 있도록 지정 된 특정 파일에 대 한 조건입니다. 코드의 각 부분을 필요에 따라 설명 되어 있습니다. 작업 코드 예제 문서 끝에도 제공 됩니다.

디렉터리 재귀 개발자는 일반적인 입/출력 작업입니다. FileSystemObject 이 작업을 쉽게 구성 요소 개체 모델 (COM)에 있습니다. 응용 프로그램입니다. 이제이 작업에는 Microsoft.net을 더욱 쉽게 되었습니다. 프레임 워크입니다. FileSystemObject와 마찬가지로 System.IO 네임 스페이스의 클래스 파일에 액세스할 개체 지향 방식으로 제공 하 고 디렉터리입니다.

요구 사항

는 다음 목록이입니다 권장 되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩:
  • Microsoft Visual Studio 2005 또는 Microsoft Visual Studio .NET
Microsoft 프로그래밍 예제 설명 목적 으로만 보증 없이 제공 명시적 이거나 묵시적인 보증도 하지 않습니다. 이 포함 되지만 하려면 묵시적 제한 되지 않습니다. 상품성 또는 특정 목적에의 적합성을 보증 합니다. 이 문서에서 되는 프로그래밍 언어에 익숙한 가정 합니다. 예제 및 작성 하 고 디버깅 하는 데 사용 되는 도구 절차입니다. Microsoft 지원 엔지니어 통해 기능을 설명할 수 있는 있지만 특정 절차를 수정 하지 않습니다이 예제 추가 제공 특정 요구 사항을 충족 하기 위해 기능이 나 구성 절차.

디렉터리 재귀

파일 및 디렉터리 조작을 클래스 System.IO 네임 스페이스에 상주합니다. 이 클래스를 사용 하기 전에 가져오기 해야 프로젝트에 다음 네임 스페이스입니다.
using System.IO;
				
System.IO 네임 스페이스 클래스 파일 작업에 대 한 다양 한 옵션을 제공 하 고 디렉터리입니다. System.IO 네임 스페이스는 인스턴스화할 수 있는 클래스를 제공 하면 파일 및 디렉터리 유틸리티 클래스도 제공합니다. 이러한 클래스에 포함 된 공유 해당 형식의 변수를 선언 하지 않고도 호출할 수 있는 방법입니다. 예를 들어 디렉터리 개체의 하위 디렉터리를 얻을 수 있습니다는 주어진 디렉터리입니다.

다음 코드 디렉터리 개체의 공유 GetDirectories 메서드를 사용 하 여 문자열 배열을 반환 합니다. 이 배열에 포함 디렉토리 경로 이름은 c:\, 있는 경우에.
Dim directories() As String = Directory.GetDirectories("C:\")
				
디렉터리 개체는 GetFiles 메서드가 포함 되어 있습니다. GetFiles 메서드는 일치 하는 파일의 문자열 배열을 검색할 수 있는 특정 조건입니다. 다음 코드 샘플에서는 파일 개체를 사용 하 여 검색할 모든 종료 파일 c:\ .dll 확장명이.
Dim files() As String = Directory.GetFiles("C:\", "*.dll")
				
GetDirectories 메서드 및 GetFiles 메서드 디렉터리 개체의 모든 파일을 재귀적으로 검색 하면 되는 검색 문자열을 일치 합니다. 다음 메서드는 재귀를 수행 하는 데 사용 됩니다.
    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
				
앞의 코드 디렉터리를 포함 하는 문자열을 전달 하 검색, DirSearch원합니다. 문자열 값이 디렉터리의 전체 경로 이름입니다. 사용자 GetDirectories 메서드는 디렉터리의 하위 디렉터리를 검색할 수 있습니다. 프로시저에 전달 합니다. GetDirectories 메서드는 배열을 반환 하므로 수는 에/각 문을 사용 하 여 각 하위 디렉터리에 대해 반복 합니다. 각각의 하위 디렉터리에 있는 파일을 반복 하는 GetFiles 메서드를 사용 합니다. 값의 양식에서 텍스트 상자의 GetFiles 메서드에 전달 됩니다. 텍스트 상자를 필터링 하는 검색 문자열이 포함 된 GetFiles 메서드가 반환 하는 결과입니다. 파일 검색 조건과 일치 하는 경우에 목록 상자에 추가 합니다. 있는 각 하위 디렉터리 DirSearch 를 다시 호출 하 고 하위 디렉터리에 전달 합니다. 이 재귀 호출을 사용 하 여 지정 된 루트 디렉터리의 모든 하위 디렉터리를 검색할 수 있습니다.

전체 코드 예제

  1. 새 Microsoft Visual Basic 2005 또는 Microsoft Visual 시작 기본.net Windows 응용 프로그램 프로젝트입니다. 기본적으로 Form1 이라는 폼 만들어집니다.
  2. 보기 메뉴에서 솔루션 탐색기를 표시 하려면 클릭 합니다.
  3. 솔루션 탐색기에서 Form1을 마우스 오른쪽 단추로 클릭 한 다음 코드 보기를클릭.
  4. Form1 코드 창에서 강조 표시 한 다음 모두 삭제를 기존 코드입니다.
  5. 다음 코드를 form1 코드 창에 붙여 넣습니다. 양식입니다.
    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
    					
    참고 Visual Basic 2005에서 코드를 변경 해야 합니다. 기본적으로 Visual Windows Forms를 만들 때 기본 두 프로젝트 파일을 만듭니다. 프로젝트입니다. Form1 폼의 이름이 다르면 폼을 나타내는 두 개의 파일이 있습니다. 명명 된 Form1.vb Form1.Designer.vb?? Form1.vb 파일에 코드를 작성 합니다. Windows Forms 디자이너에서 Form1.Designer.vb 파일의 코드를 작성합니다. 는 Windows Forms 디자이너 partial 키워드를 사용 하 여 분할 구현 합니다. Form1에 두 개의 파일이 있습니다. 이 문제는 디자이너에서 생성 방지 사용자 코드와 섞이지에서 코드입니다.

    자세한 내용은 새로운 Visual Basic 2005 언어 기능에 대 한 다음을 방문 하십시오 Microsoft 개발자 네트워크 (MSDN) 웹 사이트:
    http://msdn.microsoft.com/en-us/library/ms379584 (VS.80).aspx
    자세한 내용은 partial 클래스 및 Windows Forms에 대 한 디자이너에서 다음 MSDN 웹 사이트를 방문 하십시오.
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  6. 빌드 및 샘플을 실행 하려면 F5 키를 누릅니다.

참조

자세한 내용은 자세한 내용은 문서를 보려면 다음 문서 번호를 클릭의 Microsoft 기술 자료를 참조 하십시오.
3023092005 Visual Basic 또는 Visual Basic.net system.io를 사용 하 여 텍스트 파일을 읽는 방법
자세한 내용은 Visual Basic 대 한 .NET 다음 유즈넷 뉴스 그룹을 참조 하십시오.
Visual Basic

속성

기술 자료: 306666 - 마지막 검토: 2012년 7월 24일 화요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
키워드:?
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB306666 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:306666

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com