System.IO Namespace
The System.IO namespace provides types that allow reading and writing to files, data streams, and memory. It is the foundation for all input/output operations in .NET.
Key Types
- File – Static methods for creating, moving, and deleting files.
- FileInfo – Instance-based file manipulation.
- Directory – Static methods for working with directories.
- DirectoryInfo – Instance-based directory handling.
- Path – Operations on file and directory path strings.
- Stream – Abstract base class for byte-based I/O.
- FileStream – Stream implementation for files.
- MemoryStream – In-memory stream for temporary storage.
- StreamReader / StreamWriter – Text-based I/O over streams.
- BinaryReader / BinaryWriter – Binary I/O for primitive data types.
Reading a Text File
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp\example.txt";
// Read all lines into a string array
string[] lines = File.ReadAllLines(path);
foreach (var line in lines)
{
Console.WriteLine(line);
}
}
}
Writing to a File (Async)
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
class AsyncWrite
{
static async Task Main()
{
string path = @"C:\Temp\async.txt";
string content = "Hello, async world!";
byte[] encoded = Encoding.UTF8.GetBytes(content);
await File.WriteAllBytesAsync(path, encoded);
Console.WriteLine("File written asynchronously.");
}
}