2009-04-28 4 views
14

У меня есть варианты использования, где я буду иметь дело как с локальными файловыми путями (например, c:\foo\bar.txt), так и с URI (например, http://somehost.com/fiz/baz). Я также буду иметь дело как с относительными, так и с абсолютными путями, поэтому мне нужны такие функции, как Path.Combine и друзья.C# type для обработки относительных и абсолютных путей URI и локальных файлов

Есть ли существующий тип C#, который я должен использовать?Uri type может работать, но с пропуском взгляда, похоже, только URI.

ответ

22

Использование класса Uri, похоже, работает. Он превращает любой путь файла в синтаксис `file: /// ... 'в Uri. Он обрабатывает любой URI, как ожидалось, и имеет возможность обрабатывать относительные URI. Это зависит от того, что еще вы пытаетесь сделать с что путь

(Обновлено, чтобы показать использование относительной Ури):.

string fileName = @"c:\temp\myfile.bmp"; 
string relativeFile = @".\woohoo\temp.bmp"; 
string addressName = @"http://www.google.com/blahblah.html"; 

Uri uriFile = new Uri(fileName); 
Uri uriRelative = new Uri(uriFile, relativeFile); 
Uri uriAddress = new Uri(addressName); 

Console.WriteLine(uriFile.ToString()); 
Console.WriteLine(uriRelative.ToString()); 
Console.WriteLine(uriAddress.ToString()); 

дает мне этот выход:

file:///c:/temp/myfile.bmp 
file:///c:/temp/woohoo/temp.bmp 
http://www.google.com/blahblah.html 
+0

что файл: /// вещь ... неудобно, но Я могу жить с ним, если нужно. Я действительно надеялся на что-то более прямое настроение для него +1 – BCS

+2

Ну, вы можете проверить «LocalPath» pr operty, который даст вам имя файла в локальном формате (без файла: ///). –

+0

Очень полезно! Спасибо за быстрый ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^