Get information about a disk drive such as size and available space in C#

This example returns information about disk drives including:

  • Name
  • Total size
  • Total free size
  • Available free space
  • Format
  • Type (fixed or DVD)
  • Is ready?
  • Root directory
  • Volume label

The program uses objects in the System.IO namespace, so it includes the following statement to make using that namespace easier.

using System.IO;

When the program starts, it uses the following code to add the drives available on the system to the ComboBox cboDrive.

// Make a list of drives.
private void Form1_Load(object sender, EventArgs e)
    foreach (DriveInfo di in DriveInfo.GetDrives())
        cboDrive.SelectedIndex = 0;

When you select a drive, the following code displays information about it.

// Display information about the selected drive.
private void cboDrive_SelectedIndexChanged(object sender, EventArgs e)
    string drive_letter = cboDrive.Text.Substring(0, 1);
    DriveInfo di = new DriveInfo(drive_letter);
    lblIsReady.Text = di.IsReady.ToString();
    lblDriveType.Text = di.DriveType.ToString();
    lblName.Text = di.Name;
    lblRootDirectory.Text = di.RootDirectory.Name;
    if (di.IsReady)
        lblDriveFormat.Text = di.DriveFormat;
        lblAvailableFreeSpace.Text = di.AvailableFreeSpace.ToString();
        lblTotalFreeSize.Text = di.TotalFreeSpace.ToString();
        lblTotalSize.Text = di.TotalSize.ToString();
        lblVolumeLabel.Text = di.VolumeLabel;
        lblDriveFormat.Text = "";
        lblAvailableFreeSpace.Text = "";
        lblTotalFreeSize.Text = "";
        lblTotalSize.Text = "";
        lblVolumeLabel.Text = "";

This code makes a DriveInfo object representing the selected drive and then uses that object’s properties to learn about the drive. The only trick here is that the code checks the drive’s IsReady property before accessing some of its other properties. Some of those properties throw exceptions if the drive isn’t ready. (For example, if the drive is an empty DVD drive.)

This entry was posted in files, system and tagged , , , , , , , , , , . Bookmark the permalink.

8 Responses to Get information about a disk drive such as size and available space in C#

  1. harry says:

    how to add the drives in the drop box?

    • RodStephens says:

      If you mean, “How do you add drives to the combobox?” that’s what the example demonstrates.

      If you mean how do you search a dropbox folder as in, you can use normal file searching tools such as System.IO.Directory.GetFiles and System.IO.Directory.GetDirectories to search dropbox folders. Just start at the user’s dropbox root as in C:\Users\Harry\Dropbox.

  2. tommy says:

    hi, how can i get those information in a progress bar ( like windows progress bar that shows used space ) ?

  3. vishal says:

    what is lblavailablefreespace .text upto last it is lablel or textbox my output display in label format how i can i display in textbox
    please very clearity post now help me
    please give me clear solution here my code run but output dispaly in label not in textbox

    • RodStephens says:

      Yes, lblAvailableFreeSpace is a Label. To use a TextBox, just add a TextBox to the form. Suppose you call it txtAvailable. Then instead of doing this:

      lblAvailableFreeSpace.Text = di.AvailableFreeSpace.ToString();

      Do this:

      txtAvailable.Text = di.AvailableFreeSpace.ToString();
  4. Jay says:

    Hi, Is there a way to change the total size / available size fields to something that is more readable. ie. 1TB, 250GB, 100GB etc

Leave a Reply

Your email address will not be published. Required fields are marked *