2009-07-01 3 views
7

Uri 개체가 내 클래스의 생성자에 전달되었습니다.Uri을 열고 쉽게 가리킬 수있는 방법이 있습니까? (C#)

Uri 파일을 열고 싶습니다. 로컬, 네트워크, http 등 무엇이든 상관없이 내용을 문자열로 읽습니다. 이 작업을 수행하는 쉬운 방법이 있습니까, 아니면 열려고 시도하는 방법을 알아 내기 위해 Uri.IsFile과 같은 작업을 해봐야합니까?

답변

9
static string GetContents(Uri uri) { 
    using (var response = WebRequest.Create(uri).GetResponse()) 
    using (var stream = response.GetResponseStream()) 
    using (var reader = new StreamReader(stream)) 
     return reader.ReadToEnd(); 
} 

어떤 작동하지 않습니다. 기본적으로 file://, http://https://ftp://에서 작동합니다. 그러나 사용자 정의 URI 처리기를 WebRequest.RegisterPrefix과 함께 등록하여 해당 URI 처리기에서도 작동하게 할 수 있습니다.

5

가장 쉬운 방법은 웹 클라이언트 클래스를 사용하는 것입니다 :

using(WebClient client = new WebClient()) 
{ 
    string contents = client.DownloadString(uri); 
} 
+1

슬프게도, 그것은 스레드 안전하지, 문제, 그리고 나는 빠른 눈에서 볼 수있는 것과, 그것은 단지 HTTP를 (I 지원 atleast file : // too) –

+0

@Matthew : 내부적으로, 단지'WebRequest'를 사용하기 때문에 file : //와 ftp : //도 지원합니다. 더 많은 제어가 필요하다면 직접'WebRequest'를 사용해야합니다. 문자열을 원한다면'WebClient'를 사용하십시오. –

+0

다른 URI도 지원합니다. HTTP에만 국한되지 않습니다. 그리고 스레드로부터 안전하지 않다는 것은 무엇을 의미합니까? –

관련 문제