1. Reading & Writing Text Files
1.1 Using File Class (Simplest Way)
using System;
using System.IO;
class Program
{
static void Main()
{
string path = "example.txt";
// Writing to file
File.WriteAllText(path, "Hello C# File Handling!");
// Reading from file
string content = File.ReadAllText(path);
Console.WriteLine(content);
}
}
1.2 Using StreamWriter and StreamReader
using System;
using System.IO;
class Program
{
static void Main()
{
string path = "data.txt";
// Write multiple lines
using (StreamWriter sw = new StreamWriter(path))
{
sw.WriteLine("Line 1");
sw.WriteLine("Line 2");
}
// Read all lines
using (StreamReader sr = new StreamReader(path))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
1.3 Reading & Writing CSV Files
string csvPath = "data.csv";
// Writing CSV
string[] csvLines = { "ID,Name,Age", "1,John,25", "2,Alice,30" };
File.WriteAllLines(csvPath, csvLines);
// Reading CSV
string[] lines = File.ReadAllLines(csvPath);
foreach (string line in lines)
Console.WriteLine(line);
2. FileStream
FileStream provides low-level file access for reading/writing bytes.
using System;
using System.IO;
class Program
{
static void Main()
{
string path = "file.dat";
// Writing bytes
byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello FileStream!");
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
fs.Write(data, 0, data.Length);
}
// Reading bytes
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string content = System.Text.Encoding.UTF8.GetString(buffer);
Console.WriteLine(content);
}
}
}
3. Directory Operations
using System;
using System.IO;
class Program
{
static void Main()
{
string folder = "TestDir";
// Create directory
if (!Directory.Exists(folder))
Directory.CreateDirectory(folder);
// Get files
string[] files = Directory.GetFiles(folder);
foreach (string file in files)
Console.WriteLine(file);
// Delete directory
// Directory.Delete(folder);
}
}
4. JSON Serialization & Deserialization
C# provides System.Text.Json for working with JSON.
using System;
using System.Text.Json;
using System.IO;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
string path = "person.json";
Person person = new Person { Name = "John", Age = 25 };
// Serialization
string jsonString = JsonSerializer.Serialize(person);
File.WriteAllText(path, jsonString);
// Deserialization
string jsonFromFile = File.ReadAllText(path);
Person deserializedPerson = JsonSerializer.Deserialize<Person>(jsonFromFile);
Console.WriteLine($"{deserializedPerson.Name}, {deserializedPerson.Age}");
}
}
5. Binary Files
Binary files store data as bytes, useful for non-text data.
using System;
using System.IO;
class Program
{
static void Main()
{
string path = "data.bin";
// Writing binary data
int[] numbers = { 1, 2, 3, 4, 5 };
using (BinaryWriter bw = new BinaryWriter(File.Open(path, FileMode.Create)))
{
foreach (int num in numbers)
bw.Write(num);
}
// Reading binary data
using (BinaryReader br = new BinaryReader(File.Open(path, FileMode.Open)))
{
for (int i = 0; i < numbers.Length; i++)
Console.WriteLine(br.ReadInt32());
}
}
}
Summary of Chapter 9:
- Text files:
File.WriteAllText, StreamWriter, StreamReader. - CSV files: Use
File.ReadAllLines and File.WriteAllLines. - FileStream: Low-level byte access.
- Directory operations: Create, read, delete directories.
- JSON: Serialization & deserialization using
System.Text.Json. - Binary files: Store and read raw bytes using
BinaryWriter and BinaryReader.