You can keep your output consistent with how Windows represents file sizes by using the inbuilt function;
StrFormatByteSize
The following code will dump the files from the root of C:\, Call
getFilesAndSizes
from a button click or wherever you want.
<System.Runtime.InteropServices.DllImport("shlwapi", CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function StrFormatByteSize( _
ByVal fileSize As Long, _
ByVal buffer As System.Text.StringBuilder, _
ByVal bufferSize As Integer
) As Long
End Function
Private Sub GetFilesAndSizes()
dirFiles("C:\")
End Sub
Private Sub dirFiles(ByVal path As String)
Dim fi As System.IO.FileInfo
Dim sb As New System.Text.StringBuilder
Dim files() As String
Try
files = System.IO.Directory.GetFiles(path)
For Each file In files
fi = New System.IO.FileInfo(file)
StrFormatByteSize(fi.Length, sb, 128)
Debug.WriteLine(file & " : " & sb.ToString)
Next
Catch ex As Exception
Debug.WriteLine("Error with: " & path)
End Try
End Sub
The output generated on my laptop was;
C:\autoexec.bat : 24 bytes
C:\bootmgr : 374 KB
C:\BOOTSECT.BAK : 8.00 KB
C:\config.sys : 10 bytes
C:\hiberfil.sys : 2.24 GB
C:\pagefile.sys : 2.99 GB
I have been working in the Oil & Gas Industry for over 30 years now.
Core Discipline is Instrumentation and Control Systems.
Completed Bsc Honours Degree (B29 in Computing) with the Open University in 2012.
Currently,
Offshore Installation Manager in the
Al Shaheen oil field, which is located off the coast of Qatar. Prior to this, 25 years of North Sea Oil & Gas experience.