ファイル情報の表示(VB)

キーワード:

CreateFile, GetFileInformationByHandle, FileTimeToLocalFileTime, FileTimeToSystemTime, CloseHandle

サンプルコード:

'主な宣言
Public Type BY_HANDLE_FILE_INFORMATION
	Attributes As Long
	CreationTime As FILETIME
	AccessTime As FILETIME
	WriteTime As FILETIME
	VolumeSerialNumber As Long
	FileSizeHigh As Long
	FileSizeLow As Long
	LinkNum As Long
	FileIndexHigh As Long
	FileIndexLow As Long
End Type

Public Type SYSTEMTIME
	Year As Integer
	Month As Integer
	DayOfWeek As Integer
	Day As Integer
	Hour As Integer
	Minute As Integer
	Second As Integer
	Milliseconds As Integer
End Type

' ファイル情報の表示
Private Sub DispFileInfoByHandle()

	Dim fi As BY_HANDLE_FILE_INFORMATION
	Dim hFile As Long
	Dim ft As FILETIME
	Dim st As SYSTEMTIME

	'ファイルのオープン
	hFile = CreateFile("a:\command.com", 0, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)
	    
	'ファイル情報の取得
	GetFileInformationByHandle hFile, fi

	'ファイル情報の表示
	If (fi.Attributes And FILE_ATTRIBUTE_ARCHIVE) <> 0 Then Debug.Print "アーカイブ"
	f (fi.Attributes And FILE_ATTRIBUTE_COMPRESSED) <> 0 Then Debug.Print "圧縮"
	If (fi.Attributes And FILE_ATTRIBUTE_DIRECTORY) <> 0 Then Debug.Print "ディレクトリ"
	If (fi.Attributes And FILE_ATTRIBUTE_HIDDEN) <> 0 Then Debug.Print "隠しファイル/ディレクトリ"
	If (fi.Attributes And FILE_ATTRIBUTE_NORMAL) <> 0 Then Debug.Print "ノーマル"
	If (fi.Attributes And FILE_ATTRIBUTE_READONLY) <> 0 Then Debug.Print "書込み禁止"
	If (fi.Attributes And FILE_ATTRIBUTE_SYSTEM) <> 0 Then Debug.Print "システム"
	If (fi.Attributes And FILE_ATTRIBUTE_TEMPORARY) <> 0 Then Debug.Print "一時ファイル/ディレクトリ"

	FileTimeToLocalFileTime fi.CreationTime, ft
	FileTimeToSystemTime ft, st

	With st
		Debug.Print "作成時刻: " & _
			.Year & "/" & .Month & "/" & .Day & " " & _
			.Hour & ":" & .Minute & ":" & .Second
	End With

	FileTimeToLocalFileTime fi.AccessTime, ft
	FileTimeToSystemTime ft, st

	With st
		Debug.Print "最終アクセス時刻: " & _
			.Year & "/" & .Month & "/" & .Day & " " & _
			.Hour & ":" & .Minute & ":" & .Second
	End With

	FileTimeToLocalFileTime fi.WriteTime, ft
	FileTimeToSystemTime ft, st

	With st
		Debug.Print "最終書き込み時刻: " & _
			.Year & "/" & .Month & "/" & .Day & " " & _
			.Hour & ":" & .Minute & ":" & .Second
	End With

	Debug.Print "ボリュームのシリアルナンバー:" & Hex(fi.VolumeSerialNumber)
	Debug.Print "ファイルサイズ: " & fi.FileSizeHigh & "*2^32 +" & fi.FileSizeLow
	Debug.Print "リンク数: " & fi.LinkNum
	Debug.Print "ファイルID: " & Right("00000000", fi.FileIndexHigh) & Right("00000000", fi.FileIndexLow)

	'ファイルのクローズ
	CloseHandle hFile

End Sub


(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。