Тип File также поддерживает несколько уникальных членов, которые могут значительно упростить процесс чтения и записи текстовых данных.
| ReadAllBytes() | Открывает файл, читает двоичные данные как массив байт, затем закрывает файл |
| ReadAllLines() | Открывает файл, читает текстовые данные как массив строк, затем закрывает файл |
| ReadAllText() | Открывает файл, читает текстовые данные одной строкой, затем закрывает файл |
| WriteAllBytes() | Открывает указанный файл, записывает в него байтовый массив и закрывает файл |
| WriteAllLines() | Открывает указанный файл, записывает в него массив строк и закрывает файл |
| WriteAllText() | Открывает файл, записывает в него указанную строку и закрывает файл |
Потоковый ввод-вывод
Потоки предоставляют общий способ взаимодействия с последовательностью байт независимо от того, какого рода устройство (файл, сеть, соединение, принтер и т.п.) хранит или отображает эти байты. Концепция потока не ограничена файловым вводом-выводом. Точности ради следует отметить, что библиотеки.NET предоставляют потоковый доступ к сетям, областям памяти и прочим абстракциям, связанным с потоками.
В абстрактном классе System.Stream определен набор членов, которые обеспечивают поддержку синхронного и асинхронного взаимодействия с хранилищем (например, файлом или областью памяти):
| CanRead CanWrite CanSeek | Определяют, поддерживает ли текущий поток чтение, поиск и/или запись |
| Close() | Закрывает текущий поток и освобождает все его ресурсы (напрмер, файловые дескрипторы). Внутренне этот метод является псевдонимом Dispose() |
| Flush() | Если для вывода используется буфер, производит запись буфера и его очистку. Если поток не реализует буфер, метод не делает ничего |
| Length | Возвращает длину потока в байтах |
| Position | Определяет текущую позицию в потоке |
| Read() ReadByte() | Читает последовательность байт (или одиночный байт) из текущего потока и перемещает текущую позицию потока на количество прочитанных байтов |
| Seek() | Устанавливает позицию в текущем потоке |
| SetLength() | Устанавливает длину текущего потока |
| Write() WriteByte() | Пишет последовательность байт (или одиночный байт) в текущий поток и перемещает текущую позицию на количество записанных байтов |






