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



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('/', '\\');
}
Question

나는 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