Как прочитать файл из интернета? - PullRequest
24 голосов
/ 18 марта 2010

простой вопрос: У меня есть файл онлайн (TXT). Как прочитать и проверить, есть ли там? (C # .net 2.0)

Ответы [ 6 ]

72 голосов
/ 18 марта 2010

Я думаю, что класс WebClient подходит для этого:

WebClient client = new WebClient();
Stream stream = client.OpenRead("http://yoururl/test.txt");
StreamReader reader = new StreamReader(stream);
String content = reader.ReadToEnd();

http://msdn.microsoft.com/en-us/library/system.net.webclient.openread.aspx

20 голосов
/ 18 марта 2010

из http://www.csharp -station.com / HowTo / HttpWebFetch.aspx

    HttpWebRequest  request  = (HttpWebRequest)
        WebRequest.Create("myurl");

        // execute the request
        HttpWebResponse response = (HttpWebResponse)
            request.GetResponse();
            // we will read data via the response stream
        Stream resStream = response.GetResponseStream();
    string tempString = null;
    int    count      = 0;

    do
    {
        // fill the buffer with data
        count = resStream.Read(buf, 0, buf.Length);

        // make sure we read some data
        if (count != 0)
        {
            // translate from bytes to ASCII text
            tempString = Encoding.ASCII.GetString(buf, 0, count);

            // continue building the string
            sb.Append(tempString);
        }
    }
    while (count > 0); // any more data to read?

    // print out page source
    Console.WriteLine(sb.ToString());
7 голосов
/ 13 декабря 2013

Сначала вы можете загрузить двоичный файл:

public byte[] GetFileViaHttp(string url)
{
    using (WebClient client = new WebClient())
    {
        return client.DownloadData(url);
    }
}

Затем вы можете создать массив строк для текстового файла (при условии, что UTF-8 и что это текстовый файл):

var result = GetFileViaHttp(@"http://example.com/index.html");
string str = Encoding.UTF8.GetString(result);
string[] strArr = str.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

Вы получите каждую (кроме пустой) строки текста в каждом поле массива.

5 голосов
/ 30 августа 2017

Немного проще:

string fileContent = new WebClient().DownloadString("yourURL");
4 голосов
/ 18 марта 2010

альтернативой HttpWebRequest является WebClient

    // create a new instance of WebClient
    WebClient client = new WebClient();

    // set the user agent to IE6
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)");
    try
    {
        // actually execute the GET request
        string ret = client.DownloadString("http://www.google.com/");

        // ret now contains the contents of the webpage
        Console.WriteLine("First 256 bytes of response: " + ret.Substring(0,265));
    }
    catch (WebException we)
    {
        // WebException.Status holds useful information
        Console.WriteLine(we.Message + "\n" + we.Status.ToString());
    }
    catch (NotSupportedException ne)
    {
        // other errors
        Console.WriteLine(ne.Message);
    }

пример из http://www.daveamenta.com/2008-05/c-webclient-usage/

0 голосов
/ 18 марта 2010

Посмотрите на System.Net.WebClient, в документах даже есть пример получения файла.

Но проверка наличия файла подразумевает запрос файла и перехват исключения, если его там нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...