Преобразуйте относительный путь, который включает букву диска, в абсолютный путь для файловых функций .NET - PullRequest
2 голосов
/ 06 декабря 2010

Как преобразовать относительный путь диска, такой как D: test.xml, в абсолютный путь, который будет принимать функция, такая как XDocument.Load ().Например, на диске D в качестве текущего рабочего каталога может быть D: \ data, поэтому D: test.xml будет означать D: \ data \ test.xml.Я уже пробовал такие варианты, как D:. \ Test.xml.

Вот ошибка, которую я получаю для чего-то вроде D: test.xml: Неверный URI: путь Dos должен быть корнем, например'C: \'

Ответы [ 3 ]

5 голосов
/ 07 декабря 2010

Вы можете использовать GetFullPath. Например:

// should return "D:\data\test.xml" if the current working dir is "D:\data"
string absolutePath = Path.GetFullPath("D:test.xml");
2 голосов
/ 07 декабря 2010

Вы должны просто использовать «test.xml» в качестве относительного пути, и если текущей папкой является «D: \ data», полный путь будет преобразован в «D: \ Data \ test.xml».Это также показано в примере MSDN для метода Load (): http://msdn.microsoft.com/en-us/library/bb343181.aspx

Обратите внимание, что «driveLetter: fileName» не является относительным путем в .Net. (Пожалуйста, прочитайтеОбновление)

Вы можете преобразовать относительный путь в полный путь, используя Path.GetFullPath (), но вам не нужно делать это XDocument.Load (), поскольку он также будет принимать относительные пути.

Обновление LukeH, спасибо за указание на это!«driveLetter: fileName» принимаются Path.GetFullPath () и вычисляются как относительные пути к текущему каталогу указанного диска, как указано здесь .

Концепция текущего каталога на уровне диска унаследована с очень давних времен DOS.Не обязательно функция, на которой я буду создавать современные приложения.

1 голос
/ 07 декабря 2010

Path.GetFullPath может работать.см. документ здесь

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