- •Обзор элементов класса.
- •Класс Object
- •Структуры
- •Методы Ссылочные параметры ref и out
- •Переменное число аргументов метода
- •Перегрузка методов. Вызов методов с одинаковым именем и разными аргументами
- •Конструкторы экземпляра
- •Вызов конструктора экземпляра
- •Закрытые конструкторы экземпляра
- •Статические конструкторы
- •Конструкторы структур
- •Член со спецификатором readonly
- •Деструкторы. Сборка мусора
- •Объект Account
- •Объект Account недоступен
- •Свойства
- •Индексаторы
- •Предпосылки появления наследования
- •Синтаксис наследования.
- •Типы наследования
- •Множественное наследование
- •Наследование интерфейса
- •Виртуальные методы
- •Спецификаторы доступности
- •Вызов базовых версий функций
- •Абстрактные классы и функции
- •Структуры и наследование
- •Полиморфизм
- •Потеря и восстановление информации о типе
- •Операции is и as
- •Файловый ввод-вывод
- •Потоки данных и файловый ввод-вывод
- •Виды файлов
- •Классы файлового ввода-вывода
- •Класс FileInfo
- •Текстовый ввод-вывод при помощи Stream Reader и Stream Writer
- •Бинарный ввод и вывод при помощи класса FileStream
Файловый ввод-вывод
Термин «ввод», обозначает процесс поступления в программу данных (чисел, символов) из внешнего источника (клавиатуры, файла, удаленного компьютера). "Вывод" — это процесс поступления данных из программы в окружающую информационную среду (на экран, в файл, на удаленный компьютер).
Для чего применяются файлы? Мы подробно останавливались на использовании методов Console.ReadLine и Console.WriteLine для ввода данных с клавиатуры и вывода их на экран. Однако, данные, введенные с клавиатуры и отображенные на экране, доступны лишь временно — при завершении исполнения программы все данные стираются. Файлы позволяют сохранять данные после завершения работы программы и, естественно, после выключения компьютера. Содержимое файла можно использовать повторно из одной и той же (или разных) программ. Применение файлов позволяет удобно работать со значительными объемам информации.
Потоки данных и файловый ввод-вывод
Потоки обрабатывают ввод и вывод данных программы. Входной поток можно рассматривать, как последовательность байтов, входящих в программу из устройства-источника, а выходной — как последовательность байтов, попадающих из программы на устройство-приемник.
В языке С# и библиотеке .NET, потоки данных представлены отдельными объектами из классов, находящихся в пространстве имен System.IO.
Потоки иже знакомы нам. Так, например, знакомый читателю метод Console.ReadLine по умолчанию читает данные стандартного потока (объекта одного из классов System.IO, передающего символы, набираемые на клавиатуре, в используемую программу). Аналогичным образом, метод Console.WriteLine по умолчанию записывает данные стандартного потока, при выводе символов на экран.
Классы потоков System.IO эффективно ограждают программиста от обилия низкоуровневых деталей, связанных с устройствами ПК и его операционной системой. Это не только в значительной степени облегчает выполнение операций ввода-вывода, но и предоставляет стандартизированный, не зависящий от состояния устройств, способ выполнения операций с потоками. Такие программы намного проще в поддержке — отпала необходимость их изменять, следуя в ногу за всеми изменениями технологии более низкого, аппаратного уровня.
Виды файлов
С точки зрения технического определения, файлы — это последовательности байтов. Но любые файлы можно рассмотреть под другим углом, как текстовые или бинарные.
Текстовые файлы состоят из битов и байтов, которые, если их правильно интерпретировать, есть ни что иное, как последовательность символов. (Некоторые файлы, например, используют кодировку Unicode.) Они предназначены для прочтения пользователем, как, например, файлы, создаваемые, сохраняемые и открываемые в Notepad.
Бинарные файлы создаются и обрабатываются только компьютерными программами.
Программы, написанные на языке С#, обеспечивают доступ к бинарным файлам через бинарные потоки. По аналогии, доступ к текстовым файлам и их обработка осуществляется через символьные потоки.
Бинарные файлы можно прочесть или написать более эффективно — программные данные в таком файле сохраняются в том самом виде, в котором они представлены в памяти компьютера. Отпадает необходимость в преобразованиях, отнимающих процессорное время. Символьные потоки менее эффективны. Так, например, все числовые данные для сохранения в текстовом файле требуют предварительного преобразования.