Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод StreamReader.ReadToEnd ()

 

Опубликовано: Октябрь 2016

Считывает все символы, начиная с текущей позиции до конца потока.

Пространство имен:   System.IO
Сборка:  mscorlib (в mscorlib.dll)

public override string ReadToEnd()

Возвращаемое значение

Type: System.String

Остальная часть потока в виде строки (от текущего положения до конца). Если текущее положение находится в конце потока, возвращается пустая строка ("").

Exception Condition
OutOfMemoryException

Не хватает памяти для выделения буфера под возвращаемую строку.

IOException

Ошибка ввода-вывода.

Этот метод переопределяет TextReader.ReadToEnd.

ReadToEnd лучше всего работает, когда необходимо считать все входные данные от текущего положения до конца потока. Если требуется больший контроль над количество символов, считанных из потока, используйте Read(Char[], Int32, Int32) перегруженный метод обычно обеспечивает лучшую производительность.

ReadToEnd предполагается, что поток знает, когда достигается его конец. Для интерактивных протоколов, по которым сервер отправляет данные только в том случае, когда запроса и не закрывает соединение ReadToEnd может блокироваться неопределенное время, так как он не достиг окончания следует избегать.

Обратите внимание, что при использовании Read он является более эффективно использовать буфер такого же размера, как и внутренний буфер потока. Если размер буфера не был определен при создании потока, размер по умолчанию равен 4 Кбайт (4096 байт).

Если текущий метод вызывает OutOfMemoryException, позиция средства чтения в базовом Stream объекта увеличивается на число знаков, которое может читать метод, но знаки, уже считанные во внутренний ReadLine буфера, отбрасываются. Положение базового потока управления после считывания данных в буфере, положение основного потока может не соответствовать позиции внутреннего буфера. Чтобы сбросить внутренний буфер, вызовите DiscardBufferedData метод; тем не менее, этот метод снижает производительность и должен быть вызван только при крайней необходимости.

Список наиболее распространенных задач ввода-вывода, в разделе Распространенные задачи ввода-вывода.

В следующем примере кода считывает вплоть до конца файла в одной операции.

using System;
using System.IO;

class Test 
{

    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";

        try 
        {
            if (File.Exists(path)) 
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path)) 
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path)) 
            {
                //This allows you to do one Read operation.
                Console.WriteLine(sr.ReadToEnd());
            }
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 1.1
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: