Файловый и потоковый ввод-вывод относятся к передаче данных с носителя информации или на него. В платформе .NET Framework пространства имен System.IO содержат типы, которые обеспечивают как синхронные, так и асинхронные операции чтения и записи для потоков и файлов. Кроме того, эти пространства имен содержат типы, выполняющие сжатие и распаковку файлов, а также типы, которые обеспечивают взаимодействие через каналы и последовательные порты.
Файл это упорядоченная и именованная коллекция байтов, которая имеет постоянное хранилище. При работе с файлами используются пути к каталогам, запоминающие устройства, а также имена файлов и каталогов. В отличие от файла, поток — это последовательность байтов, которую можно использовать для записи или чтения из вспомогательного запоминающего устройства, являющегося одним из устройств хранения информации (например, дисков или памяти). Есть несколько видов запоминающих устройств, отличных от дисков, и существует несколько видов потоков, помимо файловых потоков, например сетевые потоки, потоки памяти и потоки каналов.
Типы в пространстве имен System.IO можно использовать для взаимодействия с файлами и каталогами. Например, можно получать и задавать свойства файлов и каталогов, а также извлекать коллекции файлов и каталогов на основе критерия поиска.
Ниже перечислены некоторые часто используемые классы для файлов и каталогов:
File предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект FileStream.
FileInfo предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект FileStream.
Directory предоставляет статические методы для создания, перемещения и перечисления в каталогах и подкаталогах.
DirectoryInfo предоставляет методы экземпляра для создания, перемещения и перечисления в каталогах и подкаталогах.
Path предоставляет методы и свойства для обработки строк каталогов межплатформенным способом.
Перечислены некоторые часто используемые классы потока:
FileStream — для чтения и записи в файл.
IsolatedStorageFileStream — для чтения и записи в файл в изолированном хранилище.
MemoryStream — для чтения и записи в память в качестве резервного хранилища.
BufferedStream — для повышения быстродействия операций чтения и записи.
NetworkStream — для чтения и записи на сетевые сокеты.
PipeStream — для чтения и записи в анонимные и именованные каналы.
CryptoStream — для связи потоков данных с криптографическими преобразованиями.
Перечислены некоторые часто используемые классы для чтения и записи:
BinaryReader и BinaryWriter — для чтения и записи простых типов данных, таких как двоичные значения.
StreamReader и StreamWriter — для чтения и записи символов с использованием закодированного значения для преобразования символов в байты или из байтов.
StringReader и StringWriter — для чтения и записи символов в строки или из строк.
TextReader и TextWriter используются в качестве абстрактных базовых классов для других средств чтения и записи, которые считывают и записывают символы и строки, а не двоичные данные.