VB如何取得某檔案的大小(FileLen,2GB以內)

VB要如何取得某檔案的大小呢?十分簡單,只要使用一個FileLen函數即可達成。只要傳給FileLen一個路徑,它便會傳回一個Long型態的數值,而這個數值變是該路徑檔案的大小,單位為Byte。由於FileLen的傳回值為Long(長整數)型態,而Long所存放的最大正整數為232,等於2147483648,以位元組來算的話,相當於2GB。也就是因為這樣,所以FileLen的正常使用範圍在於小於2GB的檔案,超過就會溢位變成負值。

FileLen確實是十分簡單,它的格式如下:

FileLen(字串型態的檔案路徑)

例如:

X = FileLen(“D:1234.txt")

↑程式執行後X變數便會儲存D:1234.txt的檔案大小,單位為Byte

如何?FileLen很簡單吧?

我們也可以撰寫一個函數,讓設計者更能輕易取得檔案大小,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function FileSize(Path As String, Units As String) As Long '宣告引數:Path為FileLen的檔案路徑;Units為檔案大小的單位(Byte,KB,MB,GB)。FileSize的傳回型態為Long。
    Dim ByteSize As Long '儲存一開始單位為位元組的檔案大小
    On Error GoTo Err '如果錯誤(通常是因為目標檔案不存在而找不到檔案)就會跳到Err標籤,顯示Msgbox
    ByteSize = FileLen(Path) 'FileLen(檔案路徑)能夠取得目標檔案的檔案大小
    If ByteSize < 0 Then MsgBox "檔案大小太大,溢位。請勿超過2GB。", 16, "FileSize函數溢位" '溢位的時候,FileLen會傳回負值,故如此判斷
    Select Case UCase(Units) '將Units小寫轉成大寫,並用Select Case判斷
        Case "K", "KB" '如果Units為K或KB
            FileSize = ByteSize / 1024 '1KB=1024bytes
        Case "M", "MB" '如果Units為M或MB
            FileSize = ByteSize / 1024 / 1024 '1MB=1024KB=1048576bytes
        Case "G", "GB" '如果Units為G或GB
            FileSize = ByteSize / 1024 / 1024 / 1024 '1GB=1024MB=1048576KB=1073741824bytes
        Case Else '如果什麼都不是,就用Byte單位
            FileSize = ByteSize
    End Select
    Exit Function '結束Function函數
Err: '錯誤訊息連結標籤
    MsgBox "找不到檔案!無法取得檔案大小。", 16, "FileSize函數錯誤"
End Function

舉例用法:

1
2
3
    Dim X As Long 'X變數儲存檔案大小
    X = FileSize("D:ubuntu-9.04.iso", "M") '儲存檔案大小的變數=FileSize(檔案路徑, 單位)
    Print "大小為" & X & "MB" '印出X值


FileLen的教學就到此結束囉!

文章分類:VB6.0|標籤:, ,

迴響已關閉