반응형

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제

 

메인 화면

File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가

                      표시 됩니다. 다만 사이즈 표시는 기본 Byte 로 리턴 되며 이것을 KB 또는 MB 로 바꾸기

                      위한 작업을 필요 하다면 해줄 필요가 있습니다.

                      Ex) 위 그림에서 파일 사이즈를 변환 해 본다면...

                      1024 로 한번 나누게 되면 KB -> 10722 KB

                      KB 용량을 다시 1024 로 나누게 되면 10.4 MB 가 되겠습니다.

 

파일 대화 상자

 

Folder Open 버튼 : 폴더 대화 상자가 뜨게 되며, 해당 폴더 선택 시 메인화면을 보듯이 폴더의 위치 와 사이즈가

                          표시 됩니다. 다만 사이즈 표시는 기본 Byte 로 리턴 되며 이것을 KB 또는 MB 로 바꾸기

                          위한 작업을 필요 하다면 해줄 필요가 있습니다.

                          File Open에서 설명 햇듯이 1024 한번 나누면 KB 두번 나누면 MB 로 변환 됨.

 

폴더 대화 상자

Form1.vb

 

Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lvMain.Items.Clear()

        '드라이브 구하기
        Dim dList() As DriveInfo = DriveInfo.GetDrives()

        For iCount As Integer = 0 To dList.Length - 1
            Try
                Dim lvi As ListViewItem = New ListViewItem()
                lvi.Text = dList(iCount).Name.ToString() + " 드라이브"
                lvi.SubItems.Add(dList(iCount).TotalSize.ToString())
                lvi.SubItems.Add(dList(iCount).TotalFreeSpace.ToString())

                lvMain.Items.Add(lvi)
            Catch ex As Exception

            End Try
        Next

    End Sub

    Private Function FileSize(ByVal strPath As String) As Long
        '파일 경로가 없다면
        If (strPath = "") Then Return 0

        Dim fi As FileInfo = New FileInfo(strPath)
        If (fi Is Nothing) Then Return 0

        Return fi.Length
    End Function

    Private Function FolderSize(ByVal d As DirectoryInfo) As Long

        Dim lSize As Long = 0

        '파일 사이즈
        Dim fsize() As FileInfo = d.GetFiles()

        For iCount As Integer = 0 To fsize.Count() - 1
            lSize += fsize(iCount).Length
        Next


        '하위 디렉토리 사이즈
        Dim dSize() As DirectoryInfo = d.GetDirectories()
        For iCount As Integer = 0 To dSize.Count() - 1
            lSize += FolderSize(dSize(iCount))
        Next

        Return lSize

    End Function


    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'File Open
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        '파일 열기
        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lblFilePath.Text = ofd.FileName
            lblSize.Text = FileSize(ofd.FileName).ToString()
            '
            '위 소스를 풀면
            'Dim l as Long = FileSize(ofd.FileName)
            'lblSize.Text = l.ToString()   으로 됨.
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Folder Open
        Dim fbd As FolderBrowserDialog = New FolderBrowserDialog()

        If fbd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lblFolderPath.Text = fbd.SelectedPath
            lblFolderSize.Text = FolderSize(New DirectoryInfo(fbd.SelectedPath)).ToString()
            '
            '위 소스를 풀면
            'Dim d as DirectoryInfo = new DirectoryInfo(fbd.SelectedPath)
            'Dim l as Long = FolderSize(d)
            'lblFolderSize.Text = l.ToString() 으로 됨.
            '
        End If


    End Sub
End Class

 

* 위 소스에 보면 FolderSize => 마지막 구문은 재귀호출하여 하위 디렉토리가 있으면 들어가서

파일 사이즈 를 리턴 하게 됩니다.

 

함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라고 합니다.

이러한 형태의 구문을 가지고 있는 함수를 재귀 함수라고 불리기도 합니다.

[C#] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

 

[C#] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제 File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가 표시 됩니다. 다만 사이즈 표시는 기본 Byte..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts