StreamReader Class (System - Io) - Microsoft Docs
StreamReader Class (System - Io) - Microsoft Docs
Namespace: System.IO
Assembly: System.Runtime.dll
Implements a TextReader that reads characters from a byte stream in a particular encoding.
In this article
Definition
Examples
Remarks
Constructors
Fields
Properties
Methods
Explicit Interface Implementations
Applies to
See also
C# = Copy
Examples
The following example uses an instance of StreamReader to read text from a file. The
constructor used in this example is not supported for use in Windows Store Apps.
C# = Copy
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"))
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 1/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
{
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);
}
}
}
The following example instantiates a StreamReader object and calls its ReadAsync method
to read a file asynchronously.
C# = Copy
using System;
using System.IO;
using System.Threading.Tasks;
class Example
{
static async Task Main()
{
await ReadAndDisplayFilesAsync();
}
Console.WriteLine(new String(buffer));
}
}
// The example displays the following output:
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 2/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
Remarks
StreamReader is designed for character input in a particular encoding, whereas the Stream
class is designed for byte input and output. Use StreamReader for reading lines of
information from a standard text file.
) Important
This type implements the IDisposable interface. When you have finished using the
type, you should dispose of it either directly or indirectly. To dispose of the type
directly, call its Dispose method in a try / catch block. To dispose of it indirectly, use a
language construct such as using (in C#) or Using (in Visual Basic). For more
information, see the "Using an Object that Implements IDisposable" section in the
IDisposable interface topic.
The Read(Char[], Int32, Int32) and Write(Char[], Int32, Int32) method overloads read and
write the number of characters specified by the count parameter. These are to be
distinguished from BufferedStream.Read and BufferedStream.Write, which read and write
the number of bytes specified by the count parameter. Use the BufferedStream methods
only for reading and writing an integral number of byte array elements.
7 Note
Wh di f St it i ffi i t t
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 b ff th t i th i 3/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
When reading from a Stream, it is more efficient to use a buffer that is the same size
as the internal buffer of the stream.
Constructors
StreamReader(Stream) Initializes a new instance of the StreamReader class for the
specified stream.
StreamReader(Stream, Boolean) Initializes a new instance of the StreamReader class for the
specified stream, with the specified byte order mark detection
option.
StreamReader(String, Boolean) Initializes a new instance of the StreamReader class for the
specified file name, with the specified byte order mark detection
option.
StreamReader(String, Encoding) Initializes a new instance of the StreamReader class for the
specified file name, with the specified character encoding.
StreamReader(String, Encoding, Initializes a new instance of the StreamReader class for the
Boolean) specified file name, with the specified character encoding and
byte order mark detection option.
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 4/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
y p
StreamReader(String, Encoding, Initializes a new instance of the StreamReader class for the
Boolean, Int32) specified file name, with the specified character encoding, byte
order mark detection option, and buffer size.
Fields
Null A StreamReader object around an empty stream.
Properties
BaseStream Returns the underlying stream.
EndOfStream Gets a value that indicates whether the current stream position
is at the end of the stream.
Methods
Close() Closes the StreamReader object and the underlying stream, and
releases any system resources associated with the reader.
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 5/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
GetLifetimeService() Obsolete.
Retrieves the current lifetime service object that controls the
lifetime policy for this instance.
(Inherited from MarshalByRefObject)
InitializeLifetimeService() Obsolete.
Obtains a lifetime service object to control the lifetime policy for
this instance.
(Inherited from MarshalByRefObject)
Peek() Returns the next available character but does not consume it.
Read() Reads the next character from the input stream and advances
the character position by one character.
Read(Char[], Int32, Int32) Reads a specified maximum of characters from the current
stream into a buffer, beginning at the specified index.
Read(Span<Char>) Reads the characters from the current stream into a span.
ReadAsync(Char[], Int32, Int32) Reads a specified maximum number of characters from the
current stream asynchronously and writes the data to a buffer,
beginning at the specified index.
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 6/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
ReadBlock(Char[], Int32, Int32) Reads a specified maximum number of characters from the
current stream and writes the data to a buffer, beginning at the
specified index.
ReadBlock(Span<Char>) Reads the characters from the current stream and writes the
data to a buffer.
ReadLine() Reads a line of characters from the current stream and returns
the data as a string.
ReadToEnd() Reads all characters from the current position to the end of the
stream.
ReadToEndAsync() Reads all characters from the current position to the end of the
stream asynchronously and returns them as one string.
Applies to
Product Versions
.NET 5.0
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 7/8
2/19/2021 StreamReader Class (System.IO) | Microsoft Docs
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0
Xamarin.Android 7.1
Xamarin.iOS 10.8
Xamarin.Mac 3.0
See also
Encoding
Stream
StreamWriter
File and Stream I/O
How to: Read Text from a File
How to: Write Text to a File
How to: Read and Write to a Newly Created Data File
https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 8/8