Передача данных с внешнего устройства в оперативную память называется чтением (вводом), обратный процесс — записью (выводом).
Ввод-вывод в C# выполняется с помощью подсистемы ввода-вывода и классов библиотеки .NET. Для работы с классами этого пространства имен его нужно обязательно подключить командой: using System.IO;
Обмен данными реализуется с помощью потоков.
Поток это абстракция, которая принимает и передает данные. С помощью потока можно читать данные из различных источников (клавиатура, файл) и записывать в различные источники (принтер, экран, файл). Характер поведения всех потоков одинаков. Поэтому классы и методы ввода/вывода можно применять к любым устройствам.
Обмен с потоком для повышения скорости передачи данных производится, как правило, через буфер. Буфер выделяется для каждого открытого файла.
Выполнять обмен с внешними устройствами можно на уровне:
Доступ к файлам может быть последовательным, когда очередной элемент можно прочитать (записать) только после аналогичной операции с предыдущим элементом, и прямым, при котором выполняется чтение (запись) произвольного элемента по заданному адресу.
Текстовые файлы позволяют выполнять только последовательный доступ, в двоичных и байтовых потоках можно использовать оба метода.
Прямой доступ в сочетании с отсутствием преобразований обеспечивает высокую скорость получения нужной информации.