Skip to main content

Understanding StreamWriter class

We have seen how to write in text file using File class in our previous article. Today we will see how to use StreamWriter class to write in a text file.
This class is very helpful to write text data into files. This class contains method to write to a file synchronously like Write and WriteLine or asynchronously WriteAsync and WriteLineAsync.
Using Statements. It is recommended to use using statements while we are using Stream Writer class, which ensures that is is removed from the memory once it is no longer needed. The syntax is very easy to use.
Lets check with the example that how to synchronously write to a text file using Stream Writer class. First we need to declare and initialize an instance of the class with using statement. It is available is available in System.IO namespace

Example 1

using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (StreamWriter writer = new StreamWriter(@"C:\Users\Tarun\Documents\File1.txt"))
        {
            writer.Write("First Word");
            writer.WriteLine("Second Word");
            writer.WriteLine("Third Line to write into the text file.");
            writer.Close();
            Console.ReadLine();
        }
    }
}

Example 2
Now lets check with the example that how to asynchronously write to a text file.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (StreamWriter writerAsync = new StreamWriter(@"C:\Users\Tarun\Documents\AsyncFile1.txt"))
        {
            writerAsync.WriteAsync("First Word");
            writerAsync.WriteLineAsync("Second Word");
            writerAsync.WriteLineAsync("Third Line to write into the text file.");
            writerAsync.Close();
            Console.ReadLine();
        }

    }
}

See the below output for both example

StreamWriter class output
StreamWriter class output

Note : With the using statement and Stream Writer class we have written a text file. It is a excellent class and useful for many C# programmers.
Download the whole working code here.

How to Read from a Text File using C#

In previous article we have see “How to write to a Text File using C#“, Now in this article we are going to learn how can we read text file using C#. In most of the application either we are writing something to text file or reading from text file. Reading from and writing to text file is essential for major application. So lets see the code for reading text file using C#.

The main important class is File for Read from text file which exists in System.IO namespace.
So first we need to import System.IO namespace to our project.

Now lets see example for ReadAllText method

ReadAllText

ReadAllText method will read all the content of a given file. It will take 1 parameter as a full file path.

Example #1

using System;
using System.IO;

namespace ReadFromTextFile
{
class Program
{
static void Main(string[] args)
{
string pathToReadFile = @"C:\Users\Public\";

// Example #1
// Read the file as one string.
string textFromFile = File.ReadAllText(pathToReadFile +"File1.txt");
Console.WriteLine(textFromFile);
Console.ReadKey();

}
}
}

ReadAllLines

ReadAllLines method will read all the lines of a given file in an array. It will also take 1 parameter as a full file path.

Example #2

using System;
using System.IO;

namespace ReadFromTextFile
{
class Program
{
static void Main(string[] args)
{
string pathToReadFile = @"C:\Users\Public\";

// Example #1
// Read the file as one string.
string textFromFile = File.ReadAllText(pathToReadFile +"File1.txt");
Console.WriteLine(textFromFile);

string[] linesOfText = File.ReadAllLines(pathToReadFile + "File2.txt");

foreach (string singleLine in linesOfText)
{
// print each line on a different line.
Console.WriteLine("\n" + singleLine);
}

//Lets system wait until user press any key to see the result on a console window
Console.ReadKey();
}
}
}

Please change path of “pathToReadFile” variable if that path does not exists on your system, also change the name of txt file.
If file path doesn’t exist on your system then it may cause an exception

You can download an example here.

How to write to a Text File using C#

In this article we will see how to write text in txt file using C#.
In our dot-net application frequently we required to either read from text file or write to text file. We will see how to read from txt file later.
Here we will focus on writing into text file.

The main class file we are going to user for either reading or writing is “System.IO.File” class.

File class contains a various methods to write in a txt file.

To write all the text in a file see the below example

Example For WriteAllText

// WriteAllText method will creates a new file with given name in path,
// Writes the given string to a file,
// and then close the file.
// It is not required to eithe call Close() or Flush() method.

using System.IO;

class TextWriter
{
static void Main()
{
string filePath = @"C:\Users\Public\NewFile.txt"; // Check this path exists in your system or you can change it.
string textToWrite = "Here write those text or paragraph which you want to add into text file. You can write as many characters as you want.";

File.WriteAllText(filePath, textToWrite);
}
}

Now you can also write the list of lines into a text file. See below example for more detail and syntax.

Example For WriteAllLines

// WriteAllText method will creates a new file with given name in path,
// writes a collection of strings to the file,
// and then close the file.
// It is not required to eithe call Close() or Flush() method.

using System.IO;

class TextWriter
{
static void Main()
{
string filePath = @"C:\Users\Public\NewFile.txt"; // Check this path exists in your system or you can change it.
string[] linesToWrite = { "Text of first line to write into the notepad",
"Text of second line to write into the notepad",
"Text of third line to write into the notepad"
};

File.WriteAllLines(filePath, linesToWrite);
}
}

Above both example code are creating a new file or over right an existing file.

Now lets see how to append some text to an existing file. To append the text to existing file here we will use StreamWriter class from System.IO namespace.

Example For WriteLine

// Here we will use using statement, which will call flushes and closes the stream. It will also calls the dispose on the stream object itself.

using System.IO;

class TextWriter
{
static void Main()
{
string filePath = @"C:\Users\Public\NewFile.txt"; // Check this path exists in your system or you can change it.
using (StreamWriter fileToAppend = new StreamWriter(filePath, true))
{
fileToAppend.WriteLine("Text of fourth line to write into the notepad");
}
}
}

Notes:
In below cases you may get an exceptions
– File is exists at given path but read only.
– If disk is full
– If path name is too long etc

You can download an example here