Csharp Text Files
[ C# File Input and Output](#)
The **StreamReader** and **StreamWriter** classes are used for reading and writing data to text files. These classes inherit from the abstract base class Stream, which supports byte-level reading and writing of file streams.
The **StreamReader** class inherits from the abstract base class TextReader and represents a reader that reads a sequence of characters.
The following table lists some common **methods** in the **StreamReader** class:
| No. | Method & Description |
| --- | --- |
| 1 | **public override void Close()** Closes the StreamReader object and the underlying stream, and releases any system resources associated with the reader. |
| 2 | **public override int Peek()** Returns the next available character but does not consume it. |
| 3 | **public override int Read()** Reads the next character from the input stream and advances the character position by one character. |
For a complete list of methods, please visit the Microsoft C# documentation.
The following example demonstrates reading a file named Jamaica.txt. The file is as follows:
Down the way where the nights are gay And the sun shines daily on the mountain top I took a trip on a sailing ship And when I reached Jamaica I made a stop using System;using System.IO;namespace FileApplication{ class Program { static void Main(string[] args) { try { // Create an instance of StreamReader to read the file // The using statement also closes the StreamReader using (StreamReader sr = new StreamReader("c:/jamaica.txt", Encoding.UTF8)) { string line; // Read and display lines from the file until the end of the file while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // Display the error message to the user Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } Console.ReadKey(); } }}
When you compile and execute the above program, it will display the contents of the file.
The **StreamWriter** class inherits from the abstract class TextWriter and represents a writer that writes a sequence of characters.
The following table lists some common **methods** in the **StreamWriter** class:
| No. | Method & Description |
| --- | --- |
| 1 | **public override void Close()** Closes the current StreamWriter object and the underlying stream. |
| 2 | **public override void Flush()** Clears all buffers for the current writer and causes any buffered data to be written to the underlying stream. |
| 3 | **public virtual void Write(bool value)** Writes the text representation of a Boolean value to the text string or stream. (Inherited from TextWriter.) |
| 4 | **public override void Write( char value )** Writes a character to the stream. |
| 5 | **public virtual void Write( decimal value )** Writes the text representation of a decimal value to the text string or stream. |
| 6 | **public virtual void Write( double value )** Writes the text representation of an 8-byte floating-point value to the text string or stream. |
| 7 | **public virtual void Write( int value )** Writes the text representation of a 4-byte signed integer to the text string or stream. |
| 8 | **public override void Write( string value )** Writes a string to the stream. |
| 9 | **public virtual void WriteLine()** Writes a line terminator to the text string or stream. |
For a complete list of methods, please visit the Microsoft C# documentation.
The following example demonstrates using the StreamWriter class to write text data to a file:
using System;using System.IO;namespace FileApplication{ class Program { static void Main(string[] args) { string[] names = new string[] {"Zara Ali", "Nuha Ali"}; using (StreamWriter sw = new StreamWriter("names.txt")) { foreach (string s in names) { sw.WriteLine(s); } } // Read and display each line from the file string line = ""; using (StreamReader sr = new StreamReader("names.txt")) { while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } Console.ReadKey(); } }}
When the above code is compiled and executed, it produces the following result:
Zara AliNuha Ali
[ C# File Input and Output](#)
YouTip