* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제
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) 구하기
'VB.NET Programming' 카테고리의 다른 글
[VBNET] 프로그램 중복 실행 방지 (0) | 2019.10.07 |
---|---|
[VBNET] Delay 함수 (0) | 2019.10.05 |
[VBNET] 레지스트리를 이용한 윈도우 시작 시 자동 실행 (0) | 2019.10.01 |
[VBNET] Excel File Read & Write 예제 (0) | 2019.09.29 |
[VBNET] File Create Delete Read Write Ex (0) | 2019.09.27 |