0% found this document useful (0 votes)
97 views8 pages

StreamReader Class (System - Io) - Microsoft Docs

The StreamReader class implements a TextReader that reads characters from a byte stream using a specified encoding. It provides constructors to initialize a StreamReader from a stream or file path, and properties and methods to read data from the stream, such as ReadLine() and Close(). StreamReader is designed for character input and reading text files, while the base Stream class handles byte input/output.

Uploaded by

John Smith
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views8 pages

StreamReader Class (System - Io) - Microsoft Docs

The StreamReader class implements a TextReader that reads characters from a byte stream using a specified encoding. It provides constructors to initialize a StreamReader from a stream or file path, and properties and methods to read data from the stream, such as ReadLine() and Close(). StreamReader is designed for character input and reading text files, while the base Stream class handles byte input/output.

Uploaded by

John Smith
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

2/19/2021 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

public class StreamReader : System.IO.TextReader

Inheritance Object 9 MarshalByRefObject 9 TextReader 9 StreamReader

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();
}

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:
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

// 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.

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.

StreamReader defaults to UTF-8 encoding unless specified otherwise, instead of defaulting


to the ANSI code page for the current system. UTF-8 handles Unicode characters correctly
and provides consistent results on localized versions of the operating system. If you get the
current character encoding using the CurrentEncoding property, the value is not reliable
until after the first Read method, since encoding auto detection is not done until the first
call to a Read method.

By default, a StreamReader is not thread safe. See TextReader.Synchronized for a thread-


safe wrapper.

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.

For a list of common I/O tasks, see Common I/O Tasks.

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(Stream, Initializes a new instance of the StreamReader class for the


Encoding) specified stream, with the specified character encoding.

StreamReader(Stream, Initializes a new instance of the StreamReader class for the


Encoding, Boolean) specified stream, with the specified character encoding and byte
order mark detection option.

StreamReader(Stream, Initializes a new instance of the StreamReader class for the


Encoding, Boolean, Int32) specified stream, with the specified character encoding, byte
order mark detection option, and buffer size.

StreamReader(Stream, Initializes a new instance of the StreamReader class for the


Encoding, Boolean, Int32, specified stream based on the specified character encoding, byte
Boolean) order mark detection option, and buffer size, and optionally
leaves the stream open.

StreamReader(String) Initializes a new instance of the StreamReader class for the


specified file name.

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.

CurrentEncoding Gets the current character encoding that the current


StreamReader object is using.

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.

CreateObjRef(Type) Creates an object that contains all the relevant information


required to generate a proxy used to communicate with a
remote object.
(Inherited from MarshalByRefObject)

DiscardBufferedData() Clears the internal buffer.

Dispose() Releases all resources used by the TextReader object.

(Inherited from TextReader)

Dispose(Boolean) Closes the underlying stream, releases the unmanaged resources


used by the StreamReader, and optionally releases the managed
resources.

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

Equals(Object) Determines whether the specified object is equal to the current


object.
(Inherited from Object)

GetHashCode() Serves as the default hash function.


(Inherited from Object)

GetLifetimeService() Obsolete.
Retrieves the current lifetime service object that controls the
lifetime policy for this instance.
(Inherited from MarshalByRefObject)

GetType() Gets the Type of the current instance.


(Inherited from Object)

InitializeLifetimeService() Obsolete.
Obtains a lifetime service object to control the lifetime policy for
this instance.
(Inherited from MarshalByRefObject)

MemberwiseClone() Creates a shallow copy of the current Object.


(Inherited from Object)

MemberwiseClone(Boolean) Creates a shallow copy of the current MarshalByRefObject


object.
(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.

ReadAsync(Memory<Char>, Asynchronously reads the characters from the current stream


CancellationToken) into a memory block.

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.

ReadBlockAsync(Char[], Int32, Reads a specified maximum number of characters from the


Int32) current stream asynchronously and writes the data to a buffer,
beginning at the specified index.

ReadBlock Asynchronously reads the characters from the current stream


Async(Memory<Char>, and writes the data to a buffer.
CancellationToken)

ReadLine() Reads a line of characters from the current stream and returns
the data as a string.

ReadLineAsync() Reads a line of characters asynchronously 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.

ToString() Returns a string that represents the current object.


(Inherited from Object)

Explicit Interface Implementations


IDisposable.Dispose() For a description of this member, see Dispose().
(Inherited from TextReader)

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 Core 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1

.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

Is this page helpful?


 Yes  No

https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader?view=net-5.0 8/8

You might also like