---
title: "How can you compress or decompress files in C#?"  
description: "How can you compress or decompress files in C#?"  
author: "ICSM Computer"  
published: 2025-05-07  
updated: 2025-05-07  
canonical: https://www.mindstick.com/interview/34091/how-can-you-compress-or-decompress-files-in-c-sharp  
category: "c#"  
tags: ["c#", "file handling"]  
reading_time: 2 minutes  

---

# How can you compress or decompress files in C#?

In C#, you can compress and decompress files using classes from the `System.IO.Compression` namespace, such as `GZipStream` and `ZipFile`.

### Option 1: GZip – Compress/Decompress a Single File

#### Compress with `GZipStream`:

```cs
using System;
using System.IO;
using System.IO.Compression;

class Program
{
    static void Main()
    {
        string sourceFile = "example.txt";
        string compressedFile = "example.txt.gz";

        using (FileStream originalFileStream = File.OpenRead(sourceFile))
        using (FileStream compressedFileStream = File.Create(compressedFile))
        using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
        {
            originalFileStream.CopyTo(compressionStream);
        }

        Console.WriteLine("File compressed.");
    }
}
```

#### Decompress:

```cs
string compressedFile = "example.txt.gz";
string decompressedFile = "example_decompressed.txt";

using (FileStream compressedFileStream = File.OpenRead(compressedFile))
using (FileStream decompressedFileStream = File.Create(decompressedFile))
using (GZipStream decompressionStream = new GZipStream(compressedFileStream, CompressionMode.Decompress))
{
    decompressionStream.CopyTo(decompressedFileStream);
}

Console.WriteLine("File decompressed.");
```

### Option 2: Zip – Compress/Extract Multiple Files or Folders

#### Create a Zip Archive:

```cs
using System.IO.Compression;

ZipFile.CreateFromDirectory(@"C:\SourceFolder", @"C:\output.zip");
```

#### Extract a Zip Archive:

```cs
ZipFile.ExtractToDirectory(@"C:\output.zip", @"C:\ExtractedFolder");
```

> Add a reference to `System.IO.Compression.FileSystem.dll` if you're targeting .NET Framework.

### Notes:

1. Use `GZipStream` for compressing a single file (stream-based).
2. Use `ZipFile` for full folder compression/extraction (archive-based).
3. Compression helps reduce disk usage and speeds up data transfer.

## Answers

### Answer by ICSM Computer

In C#, you can compress and decompress files using classes from the `System.IO.Compression` namespace, such as `GZipStream` and `ZipFile`.

### Option 1: GZip – Compress/Decompress a Single File

#### Compress with `GZipStream`:

```cs
using System;
using System.IO;
using System.IO.Compression;

class Program
{
    static void Main()
    {
        string sourceFile = "example.txt";
        string compressedFile = "example.txt.gz";

        using (FileStream originalFileStream = File.OpenRead(sourceFile))
        using (FileStream compressedFileStream = File.Create(compressedFile))
        using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
        {
            originalFileStream.CopyTo(compressionStream);
        }

        Console.WriteLine("File compressed.");
    }
}
```

#### Decompress:

```cs
string compressedFile = "example.txt.gz";
string decompressedFile = "example_decompressed.txt";

using (FileStream compressedFileStream = File.OpenRead(compressedFile))
using (FileStream decompressedFileStream = File.Create(decompressedFile))
using (GZipStream decompressionStream = new GZipStream(compressedFileStream, CompressionMode.Decompress))
{
    decompressionStream.CopyTo(decompressedFileStream);
}

Console.WriteLine("File decompressed.");
```

### Option 2: Zip – Compress/Extract Multiple Files or Folders

#### Create a Zip Archive:

```cs
using System.IO.Compression;

ZipFile.CreateFromDirectory(@"C:\SourceFolder", @"C:\output.zip");
```

#### Extract a Zip Archive:

```cs
ZipFile.ExtractToDirectory(@"C:\output.zip", @"C:\ExtractedFolder");
```

> Add a reference to `System.IO.Compression.FileSystem.dll` if you're targeting .NET Framework.

### Notes:

1. Use `GZipStream` for compressing a single file (stream-based).
2. Use `ZipFile` for full folder compression/extraction (archive-based).
3. Compression helps reduce disk usage and speeds up data transfer.


---

Original Source: https://www.mindstick.com/interview/34091/how-can-you-compress-or-decompress-files-in-c-sharp

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
