
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
- •Классы потоков. Класс Stream. Классы байтовых потоков. Классы символьных потоков. Классы двоичных потоков.
- •Класс FileStream и файловый ввод-вывод на побайтовой основе. Открытие и закрытие файла. Запись данных в файл. Считывание байтов из объекта класса FileStream.
- •Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader.
- •Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
- •6. Навигация по файловой системе: классы для работы с файловой системой.
- •7. Получение сведений о файле; копирование файлов; перечисление файлов в папке; изменение расширения файлов.
- •5.3. Изменение расширения файлов
- •8. Основы организации потоков. Потоки и многозадачность. Пространство имен System.Threading. Класс Thread. Создание потока.
- •9. Использование нескольких потоков. Планирование потоков, приоритеты потоков.
- •10. Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий.
- •11. Синхронизация доступа к общим данным с помощью блокировок. Управление временем существования потоков.
- •12. Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
- •13. Поставщики данных ado.Net. Поведение объектов подключения.
- •14. Объектная модель ado.Net
- •16. Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
- •Конструкторы
- •Свойства
- •События
- •17. Работа с бд с пом. Sql-запросов. Класс SqlCommand. Объект Command. Создание и инициализация. Командная строка sql-запроса CommandText.
- •Конструкторы
- •Свойства
- •18. Выборка, добавление, удаление и обновление данных с помощью sql-запросов на подсоединенном уровне.
- •19. Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
- •20. Организация хранения данных. Объект DataSet
- •21. Таблицы и поля: объекты DataTable и DataColumn
- •22. Строки: объект DataRow
- •23. Связи между таблицами: объект DataRelation
- •24. Создание подключения к базе данных. Управляемые провайдеры
- •25. Объект DataAdapter. Класс SqlDataAdapter
- •Конструкторы:
- •Свойства
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
При создании полноценных приложений исключительно важна возможность сохранения информации между сеансами доступа пользователя. Многие приложения хранят данные и обращаются с ними как с неделимыми элементами информации. Когда приложению необходима переменная или объект, оно называет нужное имя и получает то, что хочет. Однако при записи данных в файл, или передаче их по локальной сети или по Интернет, они должны быть организованы в потоки данных (streams). Внутри потока данные следуют друг за другом, как пузырьки воздуха в потоке воды.
Конечной точкой потока является какое-то запоминающее устройство. Оно служит источником данных, как озеро, из которого вытекает река. В типичном случае в качестве такого устройства выступает файл, но это может быть и локальная сеть, и веб-соединение. Поток данных, направленный в файл или из файла, ничем не отличается от потока данных, идущего по сети. Поток (stream) - это абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. С помощью потока можно читать данные из различных источников (клавиатура, файл) и записывать в различные источники (принтер, экран, файл). Поток обеспечивает общую возможность взаимодействия с последовательностями байтов, независимо от того, на устройстве какого вида (в файле, сетевом соединении, принтере и т.п.) они хранятся или отображаются. Потоки обеспечивают надежную работу, как со стандартными типами данных, так и с определенными пользователем типами данных.
C#-система ввода-вывода построена на иерархии классов, определенной в пространстве имен System.IO. Несмотря на то, что потоки связываются с различными физическими устройствами, характер поведения всех потоков одинаков. Поэтому классы и методы ввода-вывода можно применить ко многим типам устройств. На самом низком уровне C#-система ввода-вывода оперируют байтами. Это объясняется тем, что многие устройства при выполнении операций ввода-вывода ориентированы на байты. Однако для человека привычнее иметь дело с символами. Вспомним, что в C# тип char – это 16-разрядный тип, а тип byte – 8-разрядный. Преобразование типа char в byte для Unicode –символов, которым необходимы два байта, не сработает. Таким образом, байтовые потоки не вполне подходят для обработки текстового (ориентированного на символы) ввода-вывода. Поэтому разработаны символьные потоки, которые фактически представляют собой оболочки, выполняющие преобразование байтовых потоков в символьные и наоборот (byte -> char и char -> byte).
Любое приложение, использующее пространство имен System, может пользоваться тремя стандартными (встроенными) потоками, доступ к которым осуществляется через следующие свойства классов TextWriter и TextReader: 1. Console.In – относится к стандартному входному потоку (по умолчанию это клавиатура). Например, при вызове метода Console.ReadLine() информация автоматически передается в этот поток; 2. Console.Out – относится к стандартному выходному потоку (по умолчанию это консоль). Например, при вызове метода Console.WriteLine() информация автоматически передается в этот поток; 3. Console.Error – относится к ошибкам в стандартном потоке, источником которого по умолчанию является консоль. Эти потоки могут быть перенаправлены на любое совместимое устройство ввода-вывода. Стандартные потоки являются символьными, т.е. они считывают и записывают символы.