Получить букву диска из строки пути или FileInfo - PullRequest
18 голосов
/ 16 декабря 2008

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

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

Ответы [ 4 ]

45 голосов
/ 16 декабря 2008
FileInfo f = new FileInfo(path);    
string drive = Path.GetPathRoot(f.FullName);

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

23 голосов
/ 18 июня 2010

Ну, есть и это:

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();
0 голосов
/ 04 апреля 2012

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

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>");

    }
0 голосов
/ 16 декабря 2008

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

FullPath.SubString(0,1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...