Нормализация путей к файлам

#.net #c#-2.0

#.net #c #-2.0

Вопрос:

Мне нужно нормализовать путь к файлу, чтобы часть пути можно было сопоставить с помощью String.StartsWith(...)

Пример:

  • Полный путь: C:/Common/Dir1/Dir2/file.txt
  • Общий путь: C:Common

Хотя эти два пути к файлам эквивалентны, общая часть не может быть сопоставлена с помощью метода String.StartsWith(...) .

Теперь я понимаю, что метод API: Path.NormalizePath(path, true); может выполнить нормализацию, но, к сожалению, этот метод защищен изнутри!

Какие еще возможности у меня есть для нормализации путей к файлам? Path.GetFullPath(...) вероятно, включена опция, но работает только для абсолютных путей к файлам, поскольку она добавит префикс типа: C:/ для относительных.

Ответ №1:

эта работа под .net 2.0

 using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var path = @"C:/Common/Dir1/Dir2/file.txt";
            var canonicalPath = new Uri(path).LocalPath;

            Console.WriteLine(canonicalPath.StartsWith(@"C:Common"));

            Console.Read();
        }
    }
}