StreamReader Класс

Определение

Реализует объект TextReader, который считывает символы из потока байтов в определенной кодировке.

public ref class StreamReader : System::IO::TextReader
public class StreamReader : System.IO.TextReader
[System.Serializable]
public class StreamReader : System.IO.TextReader
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class StreamReader : System.IO.TextReader
type StreamReader = class
    inherit TextReader
[<System.Serializable>]
type StreamReader = class
    inherit TextReader
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type StreamReader = class
    inherit TextReader
Public Class StreamReader
Inherits TextReader
Наследование
StreamReader
Наследование
Атрибуты

Примеры

В следующем примере экземпляр используется StreamReader для считывания текста из файла. конструктор, используемый в этом примере, не поддерживается для использования в приложениях Windows Store.

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      // Create an instance of StreamReader to read from a file.
      StreamReader^ sr = gcnew StreamReader( "TestFile.txt" );
      try
      {
         String^ line;
         
         // Read and display lines from the file until the end of 
         // the file is reached.
         while ( line = sr->ReadLine() )
         {
            Console::WriteLine( line );
         }
      }
      finally
      {
         if ( sr )
            delete (IDisposable^)sr;
      }
   }
   catch ( Exception^ e ) 
   {
      // Let the user know what went wrong.
      Console::WriteLine( "The file could not be read:" );
      Console::WriteLine( e->Message );
   }
}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                string line;
                // Read and display lines from the file until the end of
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
    }
}
Imports System.IO

Class Test
    Public Shared Sub Main()
        Try
            ' Create an instance of StreamReader to read from a file.
            Dim sr As StreamReader = New StreamReader("TestFile.txt")
            Dim line As String
            ' Read and display the lines from the file until the end 
            ' of the file is reached.
            Do
                line = sr.ReadLine()
                Console.WriteLine(Line)
            Loop Until line Is Nothing
            sr.Close()
        Catch E As Exception
            ' Let the user know what went wrong.
            Console.WriteLine("The file could not be read:")
            Console.WriteLine(E.Message)
        End Try
    End Sub
End Class

В следующем примере создается экземпляр StreamReader объекта и вызывается его ReadAsync метод для асинхронного чтения файла.

using System;
using System.IO;
using System.Threading.Tasks;

class Example
{
    static async Task Main()
    {
        await ReadAndDisplayFilesAsync();
    }

    static async Task ReadAndDisplayFilesAsync()
    {
        String filename = "TestFile1.txt";
        Char[] buffer;

        using (var sr = new StreamReader(filename)) {
            buffer = new Char[(int)sr.BaseStream.Length];
            await sr.ReadAsync(buffer, 0, (int)sr.BaseStream.Length);
        }

        Console.WriteLine(new String(buffer));
    }
}
// The example displays the following output:
//       This is the first line of text in a relatively short file.
//       This is the second line.
//       This is the third line.
//       This is the fourth and final line.
Imports System.IO
Imports System.Threading.Tasks

Module Example
    Public Sub Main()
        ReadAndDisplayFilesAsync()
    End Sub

    Private Async Sub ReadAndDisplayFilesAsync()
        Dim filename As String = "TestFile1.txt"
        Dim buffer() As Char
        
        Using sr As New StreamReader(filename)
            ReDim buffer(CInt(sr.BaseStream.Length))
            Await sr.ReadAsync(buffer, 0, CInt(sr.BaseStream.Length))
        End Using

        Console.WriteLine(New String(buffer))
    End Sub
End Module
' The example displays the following output:
'       This is the first line of text in a relatively short file.
'       This is the second line.
'       This is the third line.
'       This is the fourth and final line.

Комментарии

StreamReader предназначен для ввода символов в определенной кодировке, тогда как Stream класс предназначен для ввода и вывода байтов. Используется StreamReader для чтения строк данных из стандартного текстового файла.

Важно!

Этот тип реализует интерфейс IDisposable. По окончании использования выдаленную ему память следует прямо или косвенно освободить. Чтобы сделать это прямо, вызовите его метод Dispose в блоке try/catch. Чтобы сделать это косвенно, используйте языковые конструкции, такие как using (в C#) или Using (в Visual Basic). Дополнительные сведения см. в разделе "Использование объекта, реализующего IDisposable" в статье об интерфейсе IDisposable.

StreamReader по умолчанию используется кодировка UTF-8, если не указано иное, вместо использования по умолчанию кодовой страницы ANSI для текущей системы. UTF-8 обрабатывает символы Юникода правильно и обеспечивает единообразные результаты в локализованных версиях операционной системы. При получении текущей кодировки символов с помощью CurrentEncoding свойства значение не является надежным до первого Read метода, так как автоматическое обнаружение кодировки не выполняется до первого вызова Read метода.

По умолчанию объект не StreamReader является потокобезопасным. См TextReader.Synchronized . раздел для потокобезопасной оболочки.

Read(Char[], Int32, Int32)Методы и Write(Char[], Int32, Int32) перегрузки метода считывают и записывают количество символов, заданных count параметром. Они должны различаться от BufferedStream.Read и BufferedStream.Write , которые считывают и записывают число байтов, заданных count параметром. Используйте BufferedStream методы только для чтения и записи целого числа элементов массива байтов.

Примечание

При чтении из объекта Stream более эффективно использовать буфер, размер которого совпадает с размером внутреннего буфера потока.

Список общих задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

Конструкторы

StreamReader(Stream)

Инициализирует новый экземпляр класса StreamReader для заданного потока.

StreamReader(Stream, Boolean)

Инициализирует новый экземпляр класса StreamReader для указанного потока, используя заданный параметр обнаружения метки порядка следования байтов.

StreamReader(Stream, Encoding)

Инициализирует новый экземпляр класса StreamReader для заданного потока, используя указанную кодировку символов.

StreamReader(Stream, Encoding, Boolean)

Инициализирует новый экземпляр класса StreamReader для заданного потока, используя указанную кодировку символов и параметр обнаружения метки порядка байтов.

StreamReader(Stream, Encoding, Boolean, Int32)

Инициализирует новый экземпляр класса StreamReader для заданного потока, используя указанную кодировку символов, параметр обнаружения метки порядка байтов и размер буфера.

StreamReader(Stream, Encoding, Boolean, Int32, Boolean)

Инициализирует новый экземпляр класса StreamReader для указанного потока на основе заданной кодировки символов, параметра обнаружения меток порядка байтов и размера буфера, а также при необходимости оставляет поток открытым.

StreamReader(String)

Инициализирует новый экземпляр класса StreamReader для указанного имени файла.

StreamReader(String, Boolean)

Инициализирует новый экземпляр класса StreamReader для заданного имени файла, используя указанный параметр обнаружения меток порядка байтов.

StreamReader(String, Encoding)

Инициализирует новый экземпляр класса StreamReader для заданного имени файла, используя указанную кодировку символов.

StreamReader(String, Encoding, Boolean)

Инициализирует новый экземпляр класса StreamReader для заданного имени файла, используя указанную кодировку символов и параметр обнаружения меток порядка байтов.

StreamReader(String, Encoding, Boolean, FileStreamOptions)

Инициализирует новый экземпляр StreamReader класса для указанного пути к файлу с заданной кодировкой символов, параметром обнаружения метки порядка байтов и настроенным с помощью указанного FileStreamOptions объекта.

StreamReader(String, Encoding, Boolean, Int32)

Инициализирует новый экземпляр класса StreamReader для заданного имени файла, используя указанную кодировку символов, параметр обнаружения меток порядка байтов и размер буфера.

StreamReader(String, FileStreamOptions)

Инициализирует новый экземпляр StreamReader класса для указанного пути к файлу с использованием кодировки по умолчанию, позволяя обнаруживать метки порядка байтов в начале файла и настраивать с помощью указанного FileStreamOptions объекта.

Поля

Null

Объект StreamReader для пустого потока.

Свойства

BaseStream

Возвращает основной поток.

CurrentEncoding

Возвращает текущую кодировку символов, используемую текущим объектом StreamReader.

EndOfStream

Получает значение, определяющее, находится ли позиция текущего потока в конце потока.

Методы

Close()

Закрывает объект StreamReader и основной поток и освобождает все системные ресурсы, связанные с устройством чтения.

Close()

Закрывает TextReader и освобождает все системные ресурсы, связанные с TextReader.

(Унаследовано от TextReader)
CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
DiscardBufferedData()

Очищает внутренний буфер.

Dispose()

Освобождает все ресурсы, используемые объектом TextReader.

(Унаследовано от TextReader)
Dispose(Boolean)

Закрывает основной поток, освобождает неуправляемые ресурсы, используемые StreamReader, и при необходимости освобождает управляемые ресурсы.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Является устаревшей.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Является устаревшей.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.

(Унаследовано от MarshalByRefObject)
Peek()

Возвращает следующий доступный символ, но не использует его.

Read()

Выполняет чтение следующего символа из входного потока и перемещает положение символа на одну позицию вперед.

Read(Char[], Int32, Int32)

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

Read(Span<Char>)

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

Read(Span<Char>)

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

(Унаследовано от TextReader)
ReadAsync(Char[], Int32, Int32)

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

ReadAsync(Char[], Int32, Int32)

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

(Унаследовано от TextReader)
ReadAsync(Memory<Char>, CancellationToken)

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

ReadAsync(Memory<Char>, CancellationToken)

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

(Унаследовано от TextReader)
ReadBlock(Char[], Int32, Int32)

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

ReadBlock(Char[], Int32, Int32)

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

(Унаследовано от TextReader)
ReadBlock(Span<Char>)

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

ReadBlock(Span<Char>)

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

(Унаследовано от TextReader)
ReadBlockAsync(Char[], Int32, Int32)

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

ReadBlockAsync(Char[], Int32, Int32)

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

(Унаследовано от TextReader)
ReadBlockAsync(Memory<Char>, CancellationToken)

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

ReadBlockAsync(Memory<Char>, CancellationToken)

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

(Унаследовано от TextReader)
ReadLine()

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

ReadLineAsync()

Асинхронно выполняет чтение строки символов из текущего потока и возвращает данные в виде строки.

ReadLineAsync()

Асинхронно считывает строку символов и возвращает данные в виде строки.

(Унаследовано от TextReader)
ReadLineAsync(CancellationToken)

Асинхронно считывает строку символов и возвращает данные в виде строки.

(Унаследовано от TextReader)
ReadToEnd()

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

ReadToEndAsync()

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

ReadToEndAsync()

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

(Унаследовано от TextReader)
ReadToEndAsync(CancellationToken)

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

(Унаследовано от TextReader)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого члена см. в разделе Dispose().

(Унаследовано от TextReader)

Применяется к

См. также раздел