Ответ 1
var uri = new Uri("file:///D:/Directory/File.txt");
if (uri.IsFile)
{
DriveInfo di = new DriveInfo(uri.LocalPath);
var driveName = di.Name; // Result: D:\\
}
Каков самый простой способ получить букву диска из пути файла типа URI, например
file:///D:/Directory/File.txt
Я знаю, что могу (путь здесь - строка, содержащая текст выше)
path = path.Replace(@"file:///", String.Empty);
path = System.IO.Path.GetPathRoot(path);
но он чувствует себя немного неуклюжим. Есть ли способ сделать это, не используя String.Replace или подобное?
var uri = new Uri("file:///D:/Directory/File.txt");
if (uri.IsFile)
{
DriveInfo di = new DriveInfo(uri.LocalPath);
var driveName = di.Name; // Result: D:\\
}
Это можно сделать, используя следующий код:
string path = "file:///D:/Directory/File.txt";
if(Uri.IsWellFormedUriString(path, UriKind.RelativeOrAbsolute)) {
Uri uri = new Uri(path);
string actualPath = uri.AbsolutePath;
}