Ответ 1
FileInfo f = new FileInfo(path);
string drive = Path.GetPathRoot(f.FullName);
Это вернет "C: \". Это действительно единственный способ.
Это может показаться глупым вопросом, так вот:
Помимо разбора строки FileInfo.FullPath для буквы диска, затем используйте DriveInfo ( "c" ) и т.д., чтобы увидеть, достаточно ли места для записи этого файла. Есть ли способ получить букву диска из FileInfo?
FileInfo f = new FileInfo(path);
string drive = Path.GetPathRoot(f.FullName);
Это вернет "C: \". Это действительно единственный способ.
Ну, вот и это:
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();
Ничего плохого в небольшом разборе строк :-)
FullPath.Substring(0,1);
Вы можете получить весь диск в системе, используя этот код:
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>");
}