11. File I/O Quick Reference


Part 1: File Operations Overview

File I/O Concepts

What is File I/O? Reading from and writing to files on disk.

Key Components:

  • Static Classes - Quick operations (File, Directory, Path)

  • Instance Classes - Object-oriented with metadata (FileInfo, DirectoryInfo)

  • Streams - Low-level byte/character operations

  • Readers/Writers - High-level text/binary operations

Namespaces:

using System.IO;              // File, Directory, Stream, Reader, Writer
using System.Text;            // Encoding

Part 2: File Class (Static)

What it is: Static utility class for quick file operations

When to use:

  • Simple, one-time operations

  • Don't need file metadata

  • Prefer concise code

Namespace: System.IO

Reading Files

Writing Files

Appending to Files

File Management

File Metadata

Opening Files

File Methods Summary

Method
Purpose
Async Version

ReadAllText()

Read entire file as string

ReadAllTextAsync()

ReadAllLines()

Read lines as string array

ReadAllLinesAsync()

ReadAllBytes()

Read as byte array

ReadAllBytesAsync()

WriteAllText()

Write string (overwrite)

WriteAllTextAsync()

WriteAllLines()

Write lines (overwrite)

WriteAllLinesAsync()

WriteAllBytes()

Write bytes (overwrite)

WriteAllBytesAsync()

AppendAllText()

Append string

AppendAllTextAsync()

AppendAllLines()

Append lines

AppendAllLinesAsync()

Copy()

Copy file

N/A

Move()

Move/rename file

N/A

Delete()

Delete file

N/A

Exists()

Check if exists

N/A


Part 3: FileInfo Class (Instance)

What it is: Object-oriented file operations with metadata

When to use:

  • Need file properties (size, dates, etc.)

  • Multiple operations on same file

  • Working with file objects

Namespace: System.IO

Creation

Key Properties

File Operations

FileInfo vs File

Feature
File (Static)
FileInfo (Instance)

Usage

One-liner operations

Object with properties

Performance

Good for single operation

Better for multiple ops

Metadata

Separate method calls

Properties available

Object creation

None

Creates FileInfo object

Use when

Simple, quick tasks

Need metadata or multiple ops

Example:


Part 4: Directory Class (Static)

What it is: Static utility for directory operations

When to use: Quick directory tasks

Namespace: System.IO

Directory Management

Getting Entries

Enumeration (Lazy Loading)

Current Directory

Directory Information


Part 5: DirectoryInfo Class (Instance)

What it is: Object-oriented directory operations with metadata

When to use: Need directory properties or multiple operations

Namespace: System.IO

Creation

Key Properties

Directory Operations

Getting Entries


Part 6: Path Class (Static)

What it is: Utility for working with file and directory path strings

When to use: Path manipulation, validation, parsing

Namespace: System.IO

Combining Paths

Extracting Path Components

Path Manipulation

Temporary Files

Path Constants

Path Methods Summary

Method
Purpose

Combine()

Join paths safely

GetFileName()

Get file name with extension

GetFileNameWithoutExtension()

Get file name only

GetExtension()

Get extension

GetDirectoryName()

Get directory path

GetPathRoot()

Get root (e.g., "C:")

GetFullPath()

Resolve to absolute path

ChangeExtension()

Replace extension

HasExtension()

Check if has extension

IsPathRooted()

Check if absolute

GetTempPath()

Get temp directory

GetTempFileName()

Create temp file

GetRandomFileName()

Generate random name


Part 7: StreamReader (Text Reading)

What it is: Reads text files efficiently line-by-line or character-by-character

When to use:

  • Large text files (don't load entire file)

  • Line-by-line processing

  • Custom parsing

Namespace: System.IO

Creation

Reading

Async Reading

Key Properties & Methods


Part 8: StreamWriter (Text Writing)

What it is: Writes text to files efficiently

When to use:

  • Large text generation

  • Line-by-line writing

  • Log files

Namespace: System.IO

Creation

Writing

Async Writing

Key Properties & Methods


Part 9: BinaryReader & BinaryWriter

BinaryReader

What it is: Reads primitive data types in binary format

When to use: Binary files, serialized data, custom file formats

Namespace: System.IO

Creation

Reading

Key Methods


BinaryWriter

What it is: Writes primitive data types in binary format

When to use: Binary files, serialization, custom formats

Namespace: System.IO

Creation

Writing

Key Methods


Part 10: FileStream

What it is: Low-level stream for reading/writing bytes to files

When to use:

  • Maximum control over file operations

  • Binary data

  • Base stream for readers/writers

  • Custom file protocols

Namespace: System.IO

Creation

FileMode Enum

FileAccess Enum

FileShare Enum

Reading & Writing

Seeking

Key Properties & Methods


Part 11: Specialized Classes

BufferedStream

What it is: Adds buffering to another stream for better performance

When to use: Many small reads/writes

Namespace: System.IO


MemoryStream

What it is: Stream that uses memory instead of a file

When to use:

  • In-memory buffer

  • Convert between streams and byte arrays

  • Testing

Namespace: System.IO


DriveInfo

What it is: Information about disk drives

When to use: Check disk space, drive type

Namespace: System.IO

DriveType Enum


StringReader & StringWriter

What it is: Read from/write to strings as streams

When to use: Parse strings line-by-line, build strings with stream API

Namespace: System.IO

StringReader

StringWriter


FileSystemWatcher

What it is: Monitors file system for changes

When to use: Detect file/directory changes in real-time

Namespace: System.IO

NotifyFilters Enum


Part 12: Best Practices

Error Handling

Always Use using for Streams

Use Path.Combine for Paths

Check Existence Before Operations

Use Async Methods for I/O

Specify Encoding for Text


Quick Reference Summary

When to Use What

Task
Use This

Read entire text file

File.ReadAllText()

Write entire text file

File.WriteAllText()

Read line-by-line

StreamReader

Write line-by-line

StreamWriter

Binary data

BinaryReader / BinaryWriter

Low-level control

FileStream

In-memory data

MemoryStream

Parse string

StringReader

Build string

StringWriter

Path operations

Path class

File metadata

FileInfo

Directory operations

Directory or DirectoryInfo

Watch for changes

FileSystemWatcher

Check disk space

DriveInfo

File vs FileInfo

  • File - Static, one-liner operations

  • FileInfo - Object with properties, better for multiple operations

Directory vs DirectoryInfo

  • Directory - Static, quick operations

  • DirectoryInfo - Object with properties, better for multiple operations

Common Exceptions


Guide Complete! You now have a comprehensive File I/O reference! 📁

Last updated