시작하기 전에...

갑자기 때아닌 VB 프로그램을 하나 짜게 되었습니다. 예전 대학시절 수업에서 vb 프로그램을 짜본게 전부인 저는 MSDN을 참조하여 개발할 수 밖에 없었네요 ^^;;
물론 VB DLL은 사용하였었지만 웹과 연동하는 부분이라 dll로 만들어 등록해서 써본 기억밖에 없습니다. 로그파일을 만들어야 하는데 해당 폴더가 없는 경우 에러가 발생하더군요. 또 해당 폴더를 만들라고 해도 상위폴더가 없으면 상위폴더를 만들고 또 만들어 줘야 하더군요. 상당히 귀찮음에 빠져서 그냥 함수로 만들어 봣습니다.

그다지 코드는 어렵지 않습니다.

쉽게 설명하자면 스트링값의 폴더값을 받아서 해당 폴더가 있으면 그냥 true를 반환하고 해당 폴더가 없으면 입력된 스트링값을 폴더 구분자인 \로 스플릿 시켜서 하위 폴더를 모두 생성해버리는 함수입니다. 익셉션 처리가 있어야 하겠지만 VB의 Go On Error 구문을 무지하게 시러하는 지라 굳이 익셉션 처리는 하지 않았습니다. 참고로 폴더 생성권한이 없으면 폴더가 생성되지 않을 수도 있습니다.

그럼 이제 코드를 보시겠습니다.

코드숨기기

' 디렉토리 확인 함수
' DESC : path의 경로에 디렉터리가 있는지 확인하고 없으면 생성 (리턴값은 항상 TRUE)

Function checkDirectory(ByVal path As String)
   
    Dim DirName As String
    DirName = path & "chkmkdirtest"
   
    If LCase(Dir(DirName, vbDirectory)) = LCase("chkmkdirtest") Then
        checkDirectory = True
    Else
        Dim dirDepth As Integer
        Dim dirList() As String
       
        dirList = Split(DirName, "\")
        dirDepth = UBound(dirList)
               
        Dim subDirPath As String
        subDirPath = dirList(0) & dirList(1) & "\"
       
        Dim i As Integer, j As Integer
       
        For i = 0 To dirDepth - 2
       
            subDirPath = dirList(0) & "\" & dirList(1) & "\"
            For j = 1 To i
                subDirPath = subDirPath & dirList(j + 1) & "\"
            Next j
           
            If LCase(Dir(subDirPath & "chkmkdirtest", vbDirectory)) = LCase("chkmkdirtest") Then
               
            Else
                MkDir subDirPath
            End If
           
        Next i
       
        checkDirectory = True
    End If
   
End Function

언제나 그렇듯 또 코드만 덩그라니 올려놓고 책임을 지지 않고 있습니다 하핫 -_-;;
정말이지 이러면 안되는데;; 오늘은 월요일이라서 무지하게 출근시간이 길어질꺼 같아서 집에서 빨리 출근을 해버렸습니다. 때문에 회사에 도착하니 출근시간까지 2시간이라는 시간이 남아 있네요..일을 해야되는데..
왠만한 분은 코드를 보면 모두 이해가 될 거라 믿고 더이상의 설명은 하지 않겠습니다. 이글을 볼 정도 되시면 모두 이정도 코드는 짤 수 있다고 생각이 드니까요.. ^^;;

포스팅을 마치며...

왠만하면 많은 포스팅을 하려고 하지만 도통 시간이 나질 않네요.. 거기다가 주말에는 감기까지 걸려서 시체놀이 했다는 ㅠ_ㅠ..
시간이 나는대로.. 이렇게 허덥한 글이라도 포스팅하도록 노력하겠습니다. 물론 아무도 안볼꺼지만 말입니다. 하핫 -_-;;
그럼 다음 포스팅까지 모두에게 행운이 있기를....

크리에이티브 커먼즈 라이선스
Creative Commons License