У меня есть объект Uri
, передаваемый конструктору моего класса.
Я хочу открыть файл, на который указывает Uri
, будь то локальный, сетевой, http, что угодно, и прочитать его содержимое в виде строки. Есть ли простой способ сделать это, или мне нужно попытаться отработать такие вещи, как Uri.IsFile
, чтобы выяснить, как попытаться его открыть?
2 ответа
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
, чтобы он работал и для них.
Самый простой способ - использовать класс WebClient:
using(WebClient client = new WebClient())
{
string contents = client.DownloadString(uri);
}
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.
WebRequest
, поэтому поддерживает file: // и ftp: // тоже. Если вам нужен больший контроль, вы должны использоватьWebRequest
напрямую. Если вы просто хотите вернуть строку, используйтеWebClient
.WebClient
. Здесь нет проблемы безопасности потоков ...