.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:利用可能なドライブの一覧を取得するには?」で解説している。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル
使用ライブラリ:DriveInfoクラス(System.IO名前空間)
関連TIPS:ドライブの領域サイズと空き容量を調べるには?
関連TIPS:利用可能なドライブの一覧を取得するには?

この記事と関連性の高い別の.NET TIPS
ドライブの領域サイズと空き容量を調べるには?
利用可能なドライブの一覧を取得するには?
GAC(グローバル・アセンブリ・キャッシュ)の内容をエクスプローラで通常表示するには?
ドライブをフォーマットするためのダイアログを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH