.NET Documentation

System.IO API Examples

Reading and Writing Files

Explore common operations for interacting with files, including reading content, writing data, and managing file streams.

Example 1: Reading a Text File

using System;
using System.IO;

public class FileReader
{
    public static void Main(string[] args)
    {
        string filePath = "example.txt";
        try
        {
            // Create a dummy file if it doesn't exist
            if (!File.Exists(filePath))
            {
                File.WriteAllText(filePath, "Hello, .NET IO!\nThis is a sample file.\n");
            }

            // Read all lines from the file
            string[] lines = File.ReadAllLines(filePath);

            Console.WriteLine($"Contents of {filePath}:");
            foreach (string line in lines)
            {
                Console.WriteLine(line);
            }
        }
        catch (IOException e)
        {
            Console.WriteLine($"An error occurred: {e.Message}");
        }
    }
}

Example 2: Writing to a Text File

using System;
using System.IO;

public class FileWriter
{
    public static void Main(string[] args)
    {
        string filePath = "output.txt";
        string[] linesToWrite = { "Line 1: Writing data.", "Line 2: Another line of text.", "Line 3: End of file." };

        try
        {
            // Write all lines to the file, overwriting if it exists
            File.WriteAllLines(filePath, linesToWrite);
            Console.WriteLine($"Successfully wrote to {filePath}");
        }
        catch (IOException e)
        {
            Console.WriteLine($"An error occurred: {e.Message}");
        }
    }
}

Directory Operations

Learn how to create, delete, move, and list directories and their contents.

Example 3: Creating and Listing Directories

using System;
using System.IO;

public class DirectoryManager
{
    public static void Main(string[] args)
    {
        string dirPath = "MyNewDirectory";
        string subDirPath = Path.Combine(dirPath, "SubFolder");

        try
        {
            // Create a directory
            DirectoryInfo dirInfo = Directory.CreateDirectory(dirPath);
            Console.WriteLine($"Directory '{dirInfo.FullName}' created.");

            // Create a subdirectory
            Directory.CreateDirectory(subDirPath);
            Console.WriteLine($"Directory '{subDirPath}' created.");

            // List directories in the current path
            Console.WriteLine("\nDirectories in current location:");
            string[] directories = Directory.GetDirectories(".");
            foreach (string dir in directories)
            {
                Console.WriteLine($"- {dir}");
            }

            // Clean up (optional)
            // Directory.Delete(dirPath, true);
            // Console.WriteLine($"Directory '{dirPath}' deleted.");
        }
        catch (IOException e)
        {
            Console.WriteLine($"An error occurred: {e.Message}");
        }
    }
}

File Streams

Understand how to use `FileStream` for more granular control over file reading and writing, including binary data.

Example 4: Using FileStream for Binary Data

using System;
using System.IO;

public class FileStreamExample
{
    public static void Main(string[] args)
    {
        string filePath = "binary_data.bin";
        byte[] dataToWrite = { 0x01, 0x02, 0x03, 0xFF, 0xAA };

        try
        {
            // Write binary data using FileStream
            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                fs.Write(dataToWrite, 0, dataToWrite.Length);
                Console.WriteLine($"Binary data written to {filePath}");
            }

            // Read binary data using FileStream
            byte[] readData = new byte[dataToWrite.Length];
            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                int bytesRead = fs.Read(readData, 0, readData.Length);
                Console.WriteLine($"Read {bytesRead} bytes from {filePath}:");
                foreach (byte b in readData)
                {
                    Console.Write($"{b:X2} ");
                }
                Console.WriteLine();
            }
        }
        catch (IOException e)
        {
            Console.WriteLine($"An error occurred: {e.Message}");
        }
    }
}