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 чтения текста из файла. Конструктор, используемый в этом примере, не поддерживается для использования в приложениях Магазина Windows.
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, Boolean) |
Инициализирует новый экземпляр класса для указанного StreamReader потока с указанным параметром обнаружения меток порядка байтов. |
| StreamReader(Stream, Encoding, Boolean, Int32, Boolean) |
Инициализирует новый экземпляр класса для указанного потока на основе указанного StreamReader кодировки символов, параметра обнаружения меток порядка байтов и размера буфера, а также при необходимости оставляет поток открытым. |
| StreamReader(Stream, Encoding, Boolean, Int32) |
Инициализирует новый экземпляр класса для указанного StreamReader потока с указанным кодировкой символов, параметром обнаружения байтов порядка байтов и размером буфера. |
| StreamReader(Stream, Encoding, Boolean) |
Инициализирует новый экземпляр класса для указанного StreamReader потока с указанным параметром кодировки символов и параметра обнаружения меток порядка байтов. |
| StreamReader(Stream, Encoding) |
Инициализирует новый экземпляр класса для указанного StreamReader потока с заданным кодировкой символов. |
| StreamReader(Stream) |
Инициализирует новый экземпляр класса для указанного StreamReader потока. |
| StreamReader(String, Boolean) |
Инициализирует новый экземпляр класса для указанного StreamReader имени файла с указанным параметром обнаружения меток порядка байтов. |
| StreamReader(String, Encoding, Boolean, FileStreamOptions) |
Инициализирует новый экземпляр класса для указанного StreamReader пути к файлу с заданным кодировкой символов, параметром обнаружения меток порядка байтов и настроенным с указанным FileStreamOptions объектом. |
| StreamReader(String, Encoding, Boolean, Int32) |
Инициализирует новый экземпляр класса для указанного StreamReader имени файла с указанным кодировкой символов, параметром обнаружения меток порядка байтов и размером буфера. |
| StreamReader(String, Encoding, Boolean) |
Инициализирует новый экземпляр класса для указанного StreamReader имени файла с указанным параметром кодирования символов и параметра обнаружения байтового порядка. |
| StreamReader(String, Encoding) |
Инициализирует новый экземпляр класса для указанного StreamReader имени файла с заданным кодировкой символов. |
| StreamReader(String, FileStreamOptions) |
Инициализирует новый экземпляр StreamReader класса для указанного пути к файлу, используя кодировку по умолчанию, позволяя обнаруживывать метки порядка байтов в начале файла и настраивать указанный FileStreamOptions объект. |
| StreamReader(String) |
Инициализирует новый экземпляр класса для указанного StreamReader имени файла. |
Поля
| Имя | Описание |
|---|---|
| Null |
StreamReader Объект вокруг пустого потока. |
Свойства
| Имя | Описание |
|---|---|
| BaseStream |
Возвращает базовый поток. |
| CurrentEncoding |
Возвращает кодирование текущего символа, используемое текущим StreamReader объектом. |
| EndOfStream |
Возвращает значение, указывающее, находится ли текущая позиция потока в конце потока. |
Методы
| Имя | Описание |
|---|---|
| Close() |
StreamReader Закрывает объект и базовый поток и освобождает все системные ресурсы, связанные с читателем. |
| 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>) |
Считывает символы из текущего потока в диапазон. |
| ReadAsync(Char[], Int32, Int32) |
Считывает указанное максимальное количество символов из текущего потока асинхронно и записывает данные в буфер, начиная с указанного индекса. |
| ReadAsync(Memory<Char>, CancellationToken) |
Асинхронно считывает символы из текущего потока в блок памяти. |
| ReadBlock(Char[], Int32, Int32) |
Считывает указанное максимальное количество символов из текущего потока и записывает данные в буфер, начиная с указанного индекса. |
| ReadBlock(Char[], Int32, Int32) |
Считывает указанное максимальное количество символов из текущего средства чтения текста и записывает данные в буфер, начиная с указанного индекса. (Унаследовано от TextReader) |
| ReadBlock(Span<Char>) |
Считывает символы из текущего потока и записывает данные в буфер. |
| ReadBlockAsync(Char[], Int32, Int32) |
Считывает указанное максимальное количество символов из текущего потока асинхронно и записывает данные в буфер, начиная с указанного индекса. |
| ReadBlockAsync(Memory<Char>, CancellationToken) |
Асинхронно считывает символы из текущего потока и записывает данные в буфер. |
| ReadLine() |
Считывает строку символов из текущего потока и возвращает данные в виде строки. |
| ReadLineAsync() |
Считывает строку символов асинхронно из текущего потока и возвращает данные в виде строки. |
| ReadLineAsync(CancellationToken) |
Считывает строку символов асинхронно из текущего потока и возвращает данные в виде строки. |
| ReadToEnd() |
Считывает все символы из текущей позиции в конец потока. |
| ReadToEndAsync() |
Считывает все символы из текущей позиции в конец потока асинхронно и возвращает их в виде одной строки. |
| ReadToEndAsync(CancellationToken) |
Считывает все символы из текущей позиции в конец потока асинхронно и возвращает их в виде одной строки. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IDisposable.Dispose() |
Описание этого элемента см. в разделе Dispose(). (Унаследовано от TextReader) |