c# path combine - 파일 URI를 드라이브 문자가있는 경로로 변환하기위한 .NET Framework 메서드가 있습니까?





2 Answers

나는 대답을 많이 찾았고, 가장 대중적인 대답은 Uri.LocalPath를 사용하는 것이다 . 그러나 경로에 "#"이 포함되어 있으면 System.Uri에서 올바른 LocalPath를 제공하지 못합니다. 세부 사항은 여기에 있습니다 .

내 솔루션은 다음과 같습니다.

private static string ConvertUriToPath(string fileName)
{
   Uri uri = new Uri(fileName);
   return uri.LocalPath + Uri.UnescapeDataString(uri.Fragment).Replace('/', '\\');
}
c# .net winforms uri

나는 Server.MapPath 같은 ASP.NET 영역에서 Assembly.GetExecutingAssembly () .CBBase의 출력을 드라이브 문자로 파일 경로로 변환하기 위해 찾고 있었다.

다음 코드는 내가 시도한 테스트 케이스에 적용된다.

private static string ConvertUriToPath(string fileName)
{
    fileName = fileName.Replace("file:///", "");
    fileName = fileName.Replace("/", "\\");
    return fileName;
}

.NET Framework에는 훨씬 더 나은 것이 있어야 할 것 같습니다. 단지 찾을 수 없었습니다.




위치는 CodeBase와 다를 수 있습니다. 예를 들어, ASP.NET의 파일은 c : \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET에서 해결 될 수 있습니다. "Assembly.CodeBase vs. Assembly.Location"( http://blogs.msdn.com/suzcook/archive/2003/06/26/57198.aspx)을 참조하십시오.




Related