C# Files - Complete Guide
Introduction to File Handling
File handling in C# allows you to work with files and directories using the System.IO namespace. It includes classes like File, FileInfo, Directory, DirectoryInfo, StreamReader, and StreamWriter.
You can create, read, write, append, copy, move, and delete files, as well as manage directories. Both synchronous and asynchronous methods are supported for efficient file I/O.
File Operations Examples
Here are examples of common file operations in C#:
Example
using System;
using System.IO;
namespace FilesExample
{
class Program
{
static void Main(string[] args)
{
string filePath = "sample.txt";
Console.WriteLine("=== File Writing ===");
File.WriteAllText(filePath, "Hello, File World!\nThis is a sample text file.");
Console.WriteLine("File created and text written");
File.AppendAllText(filePath, "\nThis line was appended.");
Console.WriteLine("Text appended to file");
string[] lines = { "Line 1", "Line 2", "Line 3" };
File.WriteAllLines("lines.txt", lines);
Console.WriteLine("Multiple lines written to file");
Console.WriteLine("\n=== File Reading ===");
string content = File.ReadAllText(filePath);
Console.WriteLine("File content:\n" + content);
string[] fileLines = File.ReadAllLines(filePath);
Console.WriteLine("\nFile lines:");
for (int i = 0; i < fileLines.Length; i++)
{
Console.WriteLine($"Line {i + 1}: {fileLines[i]}");
}
Console.WriteLine("\n=== File Information ===");
FileInfo fileInfo = new FileInfo(filePath);
Console.WriteLine($"File name: {fileInfo.Name}");
Console.WriteLine($"File size: {fileInfo.Length} bytes");
Console.WriteLine($"Creation time: {fileInfo.CreationTime}");
Console.WriteLine("\n=== File Operations ===");
Console.WriteLine($"File exists: {File.Exists(filePath)}");
File.Copy(filePath, "sample_copy.txt", true);
Console.WriteLine("File copied");
File.Move("sample_copy.txt", "renamed_sample.txt");
Console.WriteLine("File renamed");
Console.WriteLine("\n=== Stream Writing/Reading ===");
using (StreamWriter writer = new StreamWriter("stream_file.txt"))
{
writer.WriteLine("Line 1 from StreamWriter");
writer.WriteLine("Line 2 from StreamWriter");
}
Console.WriteLine("Stream writing completed");
using (StreamReader reader = new StreamReader("stream_file.txt"))
{
string line;
Console.WriteLine("\nStream reading:");
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Console.WriteLine("\n=== Binary File Operations ===");
using (BinaryWriter binWriter = new BinaryWriter(File.Open("binary.dat", FileMode.Create)))
{
binWriter.Write(123);
binWriter.Write(45.67);
binWriter.Write("Hello Binary");
}
Console.WriteLine("Binary file written");
using (BinaryReader binReader = new BinaryReader(File.Open("binary.dat", FileMode.Open)))
{
int intValue = binReader.ReadInt32();
double doubleValue = binReader.ReadDouble();
string stringValue = binReader.ReadString();
Console.WriteLine($"Int: {intValue}, Double: {doubleValue}, String: {stringValue}");
}
Console.WriteLine("\n=== Cleanup ===");
File.Delete(filePath);
File.Delete("lines.txt");
File.Delete("renamed_sample.txt");
File.Delete("stream_file.txt");
File.Delete("binary.dat");
Console.WriteLine("Cleanup completed");
}
}
}
Output
=== File Writing === File created and text written Text appended to file Multiple lines written to file === File Reading === File content: Hello, File World! This is a sample text file. This line was appended. File lines: Line 1: Hello, File World! Line 2: This is a sample text file. Line 3: This line was appended. === File Information === File name: sample.txt File size: 69 bytes Creation time: [Current Date Time] === File Operations === File exists: True File copied File renamed === Stream Writing/Reading === Stream writing completed Stream reading: Line 1 from StreamWriter Line 2 from StreamWriter === Binary File Operations === Binary file written Int: 123, Double: 45.67, String: Hello Binary === Cleanup === Cleanup completed