Будь-яка мова програмування повинна мати засоби для зберігання й обробки інформації на зовнішніх носіях. Для цього використовуються спеціальні об'єкти, які називаються файлами.
Файл — це послідовність даних (елементів), записана на зовнішньому носії й така, що має ім’я.
Доцільність використання файлів:
Текстові файли призначені для зберігання великих обсягів текстової (символьної) інформації.
Текстовий файл — це послідовність символів, об'єднаних у рядки різної довжини.
Кожен рядок закінчується маркером (ознакою) кінця рядка. Маркером є послідовність з двох символів: «повернення каретки» (код 10) та «перехід на новий рядок» (код 13).
У будь-який момент програмі доступний лише один елемент (один рядок). Цей елемент називається доступним.
Будь-яка операція (читання, запис) виконується лише з доступним елементом.
Після операції з доступним елементом наступним доступним стає наступний елемент.
Таким чином, можна переглянути всі елементи файлу послідовно.
Текстові файли є файлами послідовного доступу, тобто щоб прочитати n-й елемент, необхідно прочитати всі попередні. Неможливо одразу звернутись до n-го елемента.
Існують також файли прямого доступу (не текстові), у яких доступ до елементів виконується за їх номером (як у масивах). Такі файли повинні містити елементи однакової довжини.
Ввід-вивід у C# виконується за допомогою підсистеми вводу-виводу та класів бібліотеки .NET. Для роботи з цими класами потрібно обов’язково підключити простір імен командою:
| using System.IO |
|---|
Обмін даними здійснюється за допомогою потоків.
Потік — це абстракція, яка приймає та передає дані. Потоком можна зчитувати дані з різних джерел (клавіатура, файл) та записувати в різні приймачі (принтер, екран, файл). Поведінка всіх потоків однакова. Тому класи та методи вводу/виводу можна використовувати з будь-якими пристроями.
Обмін з потоком для підвищення швидкості, зазвичай, відбувається через буфер — тобто фізично зчитується не окремий рядок, а блок (кілька рядків). Для кожного відкритого файлу виділяється окремий буфер.

Для роботи з текстовими файлами ми будемо використовувати два класи: StreamReader і StreamWriter.
Типова послідовність дій під час роботи з файлом:
Якщо для відлагодження вашої програми потрібен текстовий файл, його можна створити будь-яким текстовим редактором, зокрема за допомогою програми Блокнот.
Цією ж програмою можна переглянути вміст створеного текстового файлу.
Програми на C# працюють з текстовими файлами у двобайтовому кодуванні Unicode (UTF-8).
Тому, якщо потрібно використовувати програму Блокнот (яка може створювати файли в різних кодуваннях), це можна зробити двома способами:
Примітка: перекодування потрібне лише у випадках, коли у файлі є українські (російські) літери. Якщо ж файл містить лише англійські літери та цифри, перекодування не потрібне.