file:で表されるパス(file URI scheme形式のURI)はPathクラスでは直接扱うことはできません。 file:http:などのURLと同様にUriクラスで扱います。

次の例のようにUri.HostプロパティUri.LocalPathプロパティでURIからホスト名部とパス部を分離し、パス部をPathクラスで処理することにより、file:形式のパスを扱うことができます。

file URI scheme形式のURIからパス部分を取得して、Pathクラスで処理する
using System;
using System.IO;

class Sample {
  static void Main()
  {
    const string format = "{0,10} |{1,40} |{2,20} |{3,20} |{4,10} | {5}";

    Console.WriteLine(format, "Host", "LocalPath", "Root", "Directory", "File", "URL");
    Console.WriteLine(new string('-', 150));

    foreach (var url in new[] {
      "file:///e:/dir/subdir/file.txt",
      "file:///dir/subdir/file.txt",
      "file://127.0.0.1/e:/dir/subdir/file.txt",
      "file://server1/shared/dir/subdir/file.txt",
    }) {
      var uri = new Uri(url);

      Console.WriteLine(
        format,
        uri.Host,
        uri.LocalPath,
        Path.GetPathRoot(uri.LocalPath),
        Path.GetDirectoryName(uri.LocalPath).Substring(Path.GetPathRoot(uri.LocalPath).Length),
        Path.GetFileName(uri.LocalPath),
        uri
      );
    }
  }
}
実行結果
      Host |                               LocalPath |                Root |           Directory |      File | URL
------------------------------------------------------------------------------------------------------------------------------------------------------
           |                  e:\dir\subdir\file.txt |                 e:\ |          dir\subdir |  file.txt | file:///e:/dir/subdir/file.txt
           |                    /dir/subdir/file.txt |                   \ |          dir\subdir |  file.txt | file:///dir/subdir/file.txt
 127.0.0.1 |      \\127.0.0.1\e:\dir\subdir\file.txt |      \\127.0.0.1\e: |         \dir\subdir |  file.txt | file://127.0.0.1/e:/dir/subdir/file.txt
   server1 |    \\server1\shared\dir\subdir\file.txt |    \\server1\shared |         \dir\subdir |  file.txt | file://server1/shared/dir/subdir/file.txt

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。