Smart Box

[VB.net] 폴더 내에 있는 모든 파일, 폴더 경로 불러오기 (재귀함수, FileSystemObject) 본문

Programming/VB.net

[VB.net] 폴더 내에 있는 모든 파일, 폴더 경로 불러오기 (재귀함수, FileSystemObject)

프매씨 2017. 5. 27. 03:21

VB.net 에서는 File System Object(FSO)를 통해서 폴더 안에 있는 파일 또는 폴더 이름들을 불러올 수 있습니다.


그래서 이번에는 한 함수를 재귀적으로 호출하는 '재귀함수'를 만들어 폴더 내에 있는 모든 파일, 폴더 경로를 읽어와봤습니다.

(사실 재귀함수를 공부하고 이해하기 가장 쉬운 예는 이 경우인 것 같습니다.)



그럼 FSO을 사용하여 해당 폴더에 있는 모든 파일을 불러오는 예제 소스를 살펴보시죠 :)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    Public Function ShowFolderList(path As StringAs List(Of String)
 
        Dim fso = CreateObject("Scripting.FileSystemObject")
        Dim folder = fso.GetFolder(path)
        Dim subFlds = folder.SubFolders
        Dim files = folder.files
        Dim temp As List(Of String= New List(Of String)
 
        If (fso.FolderExists(path)) Then
 
            For Each fld In subFlds
                Dim templist = ShowFolderList(path & "\" & fld.Name)
                For i As Long = 0 To templist.Count - 1
                    temp.Add(templist.Item(i))
                Next
            Next
            For Each fl In files
                temp.Add(path & "\" & fl.Name)
            Next
 
 
        End If
 
        Return temp
    End Function
cs

위 예제 소스를 설명해드리자면,


1. ShowFolderList 함수로 [폴더]를 지정합니다. 

2. [폴더] 내에 파일 이름을 불러와 경로들을 변수에 담습니다.

3. 만약, [폴더] 내에 [서브 폴더]들이 있다면, 1번으로 넘어가 [서브 폴더]들을 불러옵니다.


위 과정들을 반복하는 것 입니다.

요약하자면! 만약 폴더 안에 또 폴더(subFlds)가 있다면, 자기 자신을 다시 한 번 불러와 모든 리스트를 불러오는 방식입니다.


Comments