C#ライブラリリファレンス - ドライブに関する情報を取得
DriveInfoクラスを使用すると、ドライブに関する情報を取得できます。
日常でたとえると
ビジネスマンが集まるあの建物はどんな建物?
使用に適した状況
ドライブの状態を判断したい場合。
サンプル
/*----------------------------------------------------
*
* ドライブに関する情報を取得する。
*
----------------------------------------------------*/
using System;
using System.IO;
using System.Linq;
class Sample
{
static void Main( )
{
//全てのドライブ情報を表示
var drives =
from d in DriveInfo.GetDrives()
select d;
foreach ( DriveInfo info in drives )
ShowInfo( info );
//終了
Console.ReadLine();
}
//ドライブに関する情報を表示する。
private static void ShowInfo( DriveInfo drive )
{
Console.WriteLine(
"ドライブ{0}の各種情報は次の通りです・・・",
drive.Name );
Console.WriteLine(
"準備状態は{0}です。",
drive.IsReady );
Console.WriteLine(
"種類は{0}です。",
drive.DriveType );
Console.WriteLine(
"ルートは{0}です。",
drive.RootDirectory );
//IOExceptionを防ぐ
if ( drive.IsReady ) {
Console.WriteLine(
"フォーマットは{0}です。",
drive.DriveFormat );
Console.WriteLine(
"ボリュームラベルは{0}です。",
drive.VolumeLabel );
Console.WriteLine(
"空き領域の量{0}です。",
drive.AvailableFreeSpace );
Console.WriteLine(
"空き領域は{0}です。",
drive.AvailableFreeSpace );
Console.WriteLine(
"合計サイズは{0}です。",
drive.TotalSize );
}
Console.WriteLine();
}
}
名前空間
DriveInfoクラスはSystem.IOに属します。LINQプログラミングを行うために、System.Linqを参照しましょう。
解説
Windowsのいうところのドライブとは、記憶装置(デバイス)を識別するための文字でした。例えば、フロッピーディスクはAドライブという風に割り当てます。ディレクトリ(フォルダー)は、記憶装置内にあるものなので、ディレクトリを持つものだと考えるとよいでしょう。
先ほど過去形で書いた理由は、すでに記憶装置を識別するための文字ではないからです。昔のWindowsはMS-DOSの文化を引き継いでいました。なお、MS-DOSの文化は、CP/MというOSの文化を引き継いでいました。ですが現在では、互換性を保つために見かけ上そうなっていますが、OS内部ではすでにそうものではなくなっています。
おそらくMSがそのようにしていた理由は、Unix流の「マウント」の概念が一般ユーザーに分かりにくいからです。一般ユーザーとしては、フロッピーを入れたら、A:¥からファイルが辿れるという具合にしたほうがわかりやすいです。
C#プログラミングでは、DriveInfoクラスを使用して、ドライブに関する情報を取得します。このドライブ情報をどのように生かすのかは、貴方の腕次第です。