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

Метод StreamReader.Read (Char[], Int32, Int32)

 

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

Считывает заданное максимальное количество символов из текущего потока в буфер начиная с заданного индекса.

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

public override int Read(
	char[] buffer,
	int index,
	int count
)

Параметры

buffer
Type: System.Char[]

При возврате данный метод содержит указанный массив символов, в котором значения в интервале между index и (index + count - 1) заменены символами, считанными из текущего источника.

index
Type: System.Int32

Индекс buffer, с которого требуется начать запись.

count
Type: System.Int32

Максимальное число считываемых символов.

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

Type: System.Int32

Число символов, которые были считаны, или значение 0, если к концу потока не было считано никаких данных. Это число будет не больше параметра count, в зависимости от доступности данных в потоке.

Exception Condition
ArgumentException

Длина буфера минус index меньше count.

ArgumentNullException

Свойство buffer имеет значение null.

ArgumentOutOfRangeException

index или count является отрицательным значением.

IOException

Ошибка ввода-вывода, например "Поток закрыт".

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

Этот метод возвращает целое число, чтобы она возвращает 0, если был достигнут конец потока.

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

Этот метод возвращает после того, как число знаков, указанное в count параметра доступны для чтения, или достигнут конец файла. ReadBlock версия блокировки Read.

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

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

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 is an arbitrary size for this example.
                char[] c = null;

                while (sr.Peek() >= 0) 
                {
                    c = new char[5];
                    sr.Read(c, 0, c.Length);
                    //The output will look odd, because
                    //only five characters are read at a time.
                    Console.WriteLine(c);
                }
            }
        } 
        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
Вернуться в начало
Показ: