codingstuff.io
ExploreTutorialsProblemsCS Subjects
Get Started
ExploreTutorialsProblemsCS Subjects
Get Started
codingstuff.io

Master the art of building software through interactive tutorials, real-world problems, and guided projects.

Pune, Maharashtra, India

codingstuffmail@gmail.com

Product

  • Explore
  • Tutorials
  • Problems
  • CS Subjects

Company

  • About
  • Contact
  • Privacy Policy
  • Terms & Conditions
  • Sitemap

© 2026 codingstuff.io. All rights reserved.

Built with ❤️ for developers everywhere

/
/
All Tutorials
🔷

C# Programming

31 / 60 topics
30File I/O Operations in C#31Streaming in C#32Serialization in C#
Tutorials/C# Programming/Streaming in C#
🔷C# Programming

Streaming in C#

Updated 2026-05-15
10 min read

Streaming in C#

Introduction

In the world of software development, handling data efficiently is crucial. One of the most effective ways to manage data is through streams. Streams allow you to process large amounts of data without loading it entirely into memory, making them ideal for tasks like file I/O operations, network communications, and more.

This tutorial will guide you through the basics of using streams in C# to handle files efficiently. We'll cover how to read from and write to files using streams, as well as some best practices for working with streams.

Concept

Streams are abstract representations of a sequence of bytes that can be read or written. They provide a way to access data sequentially without loading the entire dataset into memory at once. This makes them particularly useful when dealing with large files or when you need to process data in chunks.

In C#, there are several types of streams, including:

  • FileStream: Used for reading from and writing to files.
  • MemoryStream: Used for reading and writing bytes in memory.
  • NetworkStream: Used for network communications.

Streams can be combined with other classes like StreamReader and StreamWriter to simplify the process of reading and writing text data.

Examples

Reading from a File Using Streams

Let's start by reading data from a file using a FileStream. We'll use a StreamReader to make it easier to read text data.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = "example.txt";

        // Check if the file exists
        if (!File.Exists(filePath))
        {
            Console.WriteLine("File does not exist.");
            return;
        }

        // Create a FileStream to read from the file
        using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            // Create a StreamReader to read text data
            using (StreamReader reader = new StreamReader(fileStream))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
    }
}

In this example, we first check if the file exists. If it does, we create a `FileStream` to open the file in read mode. We then use a `StreamReader` to read the contents of the file line by line and print each line to the console.

### Writing to a File Using Streams

Now, let's see how to write data to a file using streams. We'll use a `StreamWriter` to simplify writing text data.

```csharp
using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = "output.txt";
        string[] linesToWrite = { "Hello, world!", "This is a test.", "Streams are powerful." };

        // Create a FileStream to write to the file
        using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
        {
            // Create a StreamWriter to write text data
            using (StreamWriter writer = new StreamWriter(fileStream))
            {
                foreach (string line in linesToWrite)
                {
                    writer.WriteLine(line);
                }
            }
        }

        Console.WriteLine("Data written successfully.");
    }
}

In this example, we create a `FileStream` to open the file in write mode. If the file already exists, it will be overwritten. We then use a `StreamWriter` to write each line from an array of strings to the file.

### Using Buffered Streams

For better performance when dealing with large files, you can use buffered streams. A buffered stream reads or writes data in chunks, reducing the number of I/O operations.

```csharp
using System;
using System.IO;

class Program
{
    static void Main()
    {
        string inputFilePath = "example.txt";
        string outputFilePath = "buffered_output.txt";

        // Check if the input file exists
        if (!File.Exists(inputFilePath))
        {
            Console.WriteLine("Input file does not exist.");
            return;
        }

        // Create a FileStream to read from the input file
        using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read))
        {
            // Create a BufferedStream to buffer the input data
            using (BufferedStream bufferedInputStream = new BufferedStream(inputStream))
            {
                // Create a FileStream to write to the output file
                using (FileStream outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
                {
                    // Create a BufferedStream to buffer the output data
                    using (BufferedStream bufferedOutputStream = new BufferedStream(outputStream))
                    {
                        byte[] buffer = new byte[1024];
                        int bytesRead;

                        while ((bytesRead = bufferedInputStream.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            bufferedOutputStream.Write(buffer, 0, bytesRead);
                        }
                    }
                }
            }
        }

        Console.WriteLine("Data copied successfully.");
    }
}

In this example, we use `BufferedStream` to wrap the `FileStream` objects for both reading and writing. This allows us to read from and write to the files in chunks, improving performance.

## What's Next?

Now that you have a good understanding of how to use streams for efficient data transfer in C#, you might want to explore serialization in C#. Serialization is the process of converting an object into a format that can be stored or transmitted, and it often involves using streams. You can find more information on this topic in our next tutorial.

Happy coding!

PreviousFile I/O Operations in C#Next Serialization in C#

Recommended Gear

File I/O Operations in C#Serialization in C#