Получить букву диска из строки пути или FileInfo

Это может показаться глупым вопросом, так вот:

Помимо разбора строки FileInfo.FullPath для буквы диска, затем используйте DriveInfo ( "c" ) и т.д., чтобы увидеть, достаточно ли места для записи этого файла. Есть ли способ получить букву диска из FileInfo?

Ответы

Ответ 1

FileInfo f = new FileInfo(path);    
string drive = Path.GetPathRoot(f.FullName);

Это вернет "C: \". Это действительно единственный способ.

Ответ 2

Ну, вот и это:

FileInfo file = new FileInfo(path);
DriveInfo drive = new DriveInfo(file.Directory.Root.FullName);

И эй, почему бы не использовать метод расширения?

public static DriveInfo GetDriveInfo(this FileInfo file)
{
    return new DriveInfo(file.Directory.Root.FullName);
}

Тогда вы можете просто сделать:

DriveInfo drive = new FileInfo(path).GetDriveInfo();

Ответ 3

Ничего плохого в небольшом разборе строк :-)

FullPath.Substring(0,1);

Ответ 4

Вы можете получить весь диск в системе, используя этот код:

foreach (DriveInfo objDrive in DriveInfo.GetDrives())
    {
        Response.Write("</br>Drive Type : " + objDrive.Name);
        Response.Write("</br>Drive Type : " + objDrive.DriveType.ToString());
        Response.Write("</br>Available Free Space : " + objDrive.AvailableFreeSpace.ToString() + "(bytes)");
        Response.Write("</br>Drive Format : " + objDrive.DriveFormat);
        Response.Write("</br>Total Free Space : " + objDrive.TotalFreeSpace.ToString() + "(bytes)");
        Response.Write("</br>Total Size : " + objDrive.TotalSize.ToString() + "(bytes)");
        Response.Write("</br>Volume Label : " + objDrive.VolumeLabel);
        Response.Write("</br></br>");

    }