Создание пути Windows из URI XML - PullRequest
0 голосов
/ 17 апреля 2009

Как правильно преобразовать URI XML в путь к файлу Windows?

В качестве отправной точки можно повернуть:

file:///C:/DirA/DirB/File.txt

в

C:\DirA\DirB\File.txt

... сначала удалив подстроку file:/// (использовав ее для определения того, что мы имеем дело с локальным файлом), а затем поместив обратную косую черту везде, где косая черта появляется в исходной строке. Это кажется хорошим началом, но этого недостаточно. Например, URI может выглядеть так:

file:///C:/DirA/DirB/With%20Spaces.txt

... который становится:

C:\DirA\DirB\With Spaces.txt

... после замены% 20s пробелами. Однако даже этого будет недостаточно, поскольку, возможно, также необходимо иметь дело с другими такими кодировками . Кроме того, некоторые из этих символов не будут допустимыми символами имен файлов Windows, поэтому необходимо определить, какие из этих кодировок являются допустимыми в именах файлов Windows, и пометить ошибку, если что-то еще встретится.

Есть что-нибудь еще, что я забыл? Кто-нибудь хочет расширить на вышеупомянутом?

Ответы [ 2 ]

2 голосов
/ 14 мая 2009

Используйте свойство Uri.LocalPath.

string path = new Uri("file:///C:/folder/file.txt").LocalPath;

Это зависит от платформы, поэтому path равно "C:\folder\file.txt" на моей машине с Windows.

Обратите внимание, что вы также можете пойти другим путем (от пути локальной файловой системы до file URI), используя конструктор:

var uri = new Uri(@"C:\folder\file.txt");
1 голос
/ 17 апреля 2009

Вы должны использовать PathCreateFromUrl () в Windows.

См. Также Странная и несчастная история файла: URL-адреса .

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