|
.NET TIPS
ドライブについての情報を取得するには?[2.0のみ、C#、VB]
デジタルアドバンテージ 遠藤 孝信
2007/02/15 |
|
|
.NET Framework 1.xのクラス・ライブラリでは、コンピュータの論理ドライブについて、そのフォーマット(FAT、NTFSなど)、種類(ハードディスク、CD-ROMなど)、ボリューム名を取得するには、Win32 APIを呼び出したり、WMI(Windows Management Instrumentation)の機能を使ったりする必要があった。
しかし.NET Framework 2.0では、新しくDriveInfoクラス(System.IO名前空間)が用意されており、簡単に論理ドライブについての情報を取得できるようになっている。
このDriveInfoクラスで取得できる論理ドライブについての情報には以下のような項目がある。
項目名 |
プロパティ名 |
戻り値 |
ドライブ名 |
Name |
文字列(「C:\」「D:\」など) |
フォーマット |
DriveFormat |
文字列(「FAT32」「NTFS」など) |
種類 |
DriveType |
DriveType列挙体(System.IO名前空間)の値 |
ボリュームラベル |
VolumeLabel |
文字列 |
|
DriveInfoクラスで取得できる論理ドライブについての情報 |
この表には記載していない論理ドライブの領域サイズや空き容量などを調べるプロパティについては「TIPS:ドライブの領域サイズと空き容量を調べるには?」で解説しているのでそちらも併せて参照していただきたい。 |
なお、これらのプロパティ(ただしNameプロパティを除く)にアクセスする際には、そのドライブの準備ができていないと例外が発生する(例えばCD-ROMドライブではCDが挿入されていなければならない)。ドライブの準備ができているかどうかは、あらかじめIsReadyプロパティの値でチェックできる。
次のサンプル・プログラムでは、コンピュータに接続されている全ドライブの情報を表示する(準備のできていないドライブについては「Not Ready」を表示する)。
// driveinfo.cs
using System;
using System.IO;
class DriveInfoTest {
static void Main() {
foreach (DriveInfo drive in DriveInfo.GetDrives()) {
Console.Write(drive.Name); // ドライブ名
if (drive.IsReady) { // ドライブの準備はOK?
Console.WriteLine("\t{0}\t{1}\t{2}",
drive.DriveFormat, // フォーマット
drive.DriveType, // 種類
drive.VolumeLabel); // ボリュームラベル
} else {
Console.WriteLine("\tNot Ready");
}
}
// 出力例:
// C:\ NTFS Fixed 20G xp
// D:\ CDFS CDRom Audio CD
// E:\ NTFS Fixed 40G vista
// K:\ Not Ready
// W:\ NTFS Network 230G XP
// X:\ NTFS Network 160G mp3
}
}
// コンパイル方法:csc driveinfo.cs
|
|
全ドライブの情報を表示するC#のサンプル・プログラム(driveinfo.cs) |
|
' driveinfo.vb
Imports System
Imports System.IO
Class DriveInfoTest
Shared Sub Main()
For Each drive As DriveInfo In DriveInfo.GetDrives()
Console.Write(drive.Name) ' ドライブ名
If drive.IsReady ' ドライブの準備はOK?
Console.WriteLine( _
vbTab & drive.DriveFormat _
& vbTab & drive.DriveType.ToString() _
& vbTab & drive.VolumeLabel)
Else
Console.WriteLine(vbTab & "Not Ready")
End If
Next
' 出力例:
' C:\ NTFS Fixed 20G xp
' D:\ CDFS CDRom Audio CD
' E:\ NTFS Fixed 40G vista
' K:\ Not Ready
' W:\ NTFS Network 230G XP
' X:\ NTFS Network 160G mp3
End Sub
End Class
' コンパイル方法:vbc driveinfo.vb
|
|
全ドライブの情報を表示するVBのサンプル・プログラム(driveinfo.vb) |
|
このプログラムでは、各ドライブについてのDriveInfoオブジェクトを作成するのにDriveInfoクラスのGetDrivesメソッドを使用しているが、ドライブ名の一覧を文字列として取得するだけならDirectoryクラス(System.IO名前空間)のGetLogicalDrivesメソッドでも可能だ。これについては「TIPS:利用可能なドライブの一覧を取得するには?」で解説している。
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間