ファイルサイズの取得(V) <TOP>
ファイルサイズを取得します。
CreateFile 指定したファイルをオープンし、デバイスハンドルを返す
GetFileSize ファイルのサイズをバイト単位で取得
CloseHandle オープンされているオブジェクトハンドルをクローズ
例では「Constant.csv」を指定してファイルサイズを取得しています。
'================================================================
'= ファイルサイズの取得(V)
'= (GetFileSize.bas) '================================================================ ' セキュリティを定義する構造体 Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type ' 指定したファイルをオープンし、デバイスハンドルを返す Declare Function Api_CreateFile& Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName$, ByVal dwDesiredAccess&, ByVal dwShareMode&, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDistribution&, ByVal dwFlagsAttributes&, ByVal hTemplateFile&) ' オープンされているオブジェクトハンドルをクローズ Declare Function Api_CloseHandle& Lib "kernel32" Alias "CloseHandle" (ByVal hObject&) ' ファイルのサイズをバイト単位で取得 Declare Function Api_GetFileSize& Lib "kernel32" Alias "GetFileSize" (ByVal hFile&, lpFileSizeHigh&) #define INVALID_HANDLE_VALUE -1 '見つからない場合 #define GENERIC_READ -2147483648 '読み込みモード(&H80000000) #define OPEN_EXISTING 3 'ファイルをオープンする(存在しない場合失敗) Var FileName As String Var hFileName As Long Var sa As SECURITY_ATTRIBUTES Var FileSizeLow As Long Var FileSizeHigh As Long Var Ret As Long 'ファイル名を指定 FileName = "Constant.csv" 'セキュリティ構造体を初期化 sa.nLength = len(sa) 'ファイルハンドル取得 hFileName = Api_CreateFile(FileName, GENERIC_READ, 0, sa, OPEN_EXISTING, 0, 0) 'ファイルハンドルの値が有効(見つかったとき) If hFileName <> INVALID_HANDLE_VALUE Then 'ファイルサイズを取得 FileSizeLow = Api_GetFileSize(hFileName, FileSizeHigh) 'ファイルサイズの取得に失敗したときは If FileSizeLow = &HFFFFFFFF Then '拡張エラー情報を表示 Print "取得に失敗しました。" Else 'ファイルサイズを表示 Print FileName ":" FileSizeLow "Byte" End If 'ファイルをクローズ Ret = Api_CloseHandle(hFileName) '有効でないとき Else 'エラーを表示 Print "ファイルを開けませんでした。" End If Stop End