2010-07-08 5 views
1

Можно создать дубликат:
How can I compare (directory) paths in C#?Лучший способ для сравнения Windows имена каталогов

У меня есть имя файла и имя каталога, и я хочу, если отсрочкой файл находится в директории. Моя первая мысль заключалась в том, чтобы использовать сравнение строк и проверить, что строка имени файла начинается с строки имени каталога. Однако это может привести к сбою в том случае, если имя каталога было UNC-путём, а имя файла было отображено на диске. Или, если в одной из строк была какая-то другая форма псевдонима.

Сравнение строк просто не похоже на надежный метод. Есть ли встроенная функция .NET для определения того, указывают ли объекты 2 DirectoryInfo на одну и ту же папку?

+0

http://stackoverflow.com/questions/1794025/how-to-check-whether-2-directoryinfo-objects-are-pointing-to-the-same-directory – m0s

+0

Спасибо! Это один из тех случаев, когда я не мог придумать правильные условия поиска, чтобы найти то, что искал. – CoderDennis

ответ

0

Вы должны использовать класс Path.

Что-то вроде следующего будет делать трюк:

string.Compare(Path.GetDirectoryName(filePath), directoryPath.Trim('\\'), true) 

Если вы хотите, чтобы обрабатывать относительные пути, то вы можете конвертировать DirectoryPath и Filepath в полные пути первых:

string.Compare(Path.GetDirectoryName(Path.GetFullPath(filePath)), GetFullPath(directoryPath).Trim('\\'), true) 

EDIT: Отредактировано для выполнения сравнения инвариантов.