
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
- •Классы потоков. Класс Stream. Классы байтовых потоков. Классы символьных потоков. Классы двоичных потоков.
- •1.5. Классы символьных потоков:
- •1.6. Классы двоичных потоков:
- •Класс FileStream и файловый ввод-вывод на побайтовой основе. Открытие и закрытие файла. Запись данных в файл. Считывание байтов из объекта класса FileStream.
- •Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader.
- •Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
- •Наиболее важные методы выходного потока BinaryWriter:
- •Навигация по файловой системе: классы для работы с файловой системой.
- •Получение сведений о файле; копирование файлов; перечисление файлов в папке; изменение расширения файлов.
- •5.3. Изменение расширения файлов
- •Основы организации потоков. Потоки и многозадачность.
- •Пространство имен System.Threading. Класс Thread. Создание потока.
- •Создание потока. Чтобы создать поток, необходимо создать объект типа Thread. В классе Thread определен следующий конструктор: public Thread(ThreadStart entryPoint),
- •Приоритет потоков. Класс Thead поддерживает установку и получение приоритета потока. Для этого используется перечисление ThreadPriority. Его значения:
- •Использование нескольких потоков. Планирование потоков, приоритеты потоков. Можно создавать в программе несколько дочерних потоков.
- •Создать статический метод SimpleWork() в классе MultiThread (перед методом Main), который выводит на экран Id-номер каждого потока:
- •Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий.
- •Синхронизация доступа к общим данным с помощью блокировок.
- •2) Выполнить блокировку операторов в ранее используемых методах SimpleWork и run:
- •Управление временем существования потоков.
- •Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
- •2.2 Три стороны технологии ado.Net
- •15.Поставщики данных ado.Net. Поведение объектов подключения.
- •Объектная модель ado.Net.
- •Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
- •Конструкторы
- •Свойства
- •События
- •Конструкторы
- •Свойства
- •Выборка, добавление, удаление и обновление данных с помощью sql-запросов на подсоединенном уровне.
- •Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
- •Сравнение DataReader и DataSet:
- •Чтение данных из DataReader:
- •Организация хранения данных. Объект DataSet.
- •Строки: объект DataRow.
- •Конструкторы:
- •Свойства
- •Передача данных между источником данных и объектом DataSet. Обновление базы данных с помощью адаптера данных.
Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
При создании полноценных приложений исключительно важна возможность сохранения информации между сеансами доступа пользователя.
Многие приложения хранят данные и обращаются с ними как с неделимыми элементами информации. Когда приложению необходима переменная или объект, оно называет нужное имя и получает то, что хочет. Однако при записи данных в файл, или передаче их по локальной сети или по Интернет, они должны быть организованы в потоки данных (streams). Внутри потока данные следуют друг за другом, как пузырьки воздуха в потоке воды.
Конечной точкой потока является какое-то запоминающее устройство. Оно служит источником данных, как озеро, из которого вытекает река. В типичном случае в качестве такого устройства выступает файл, но это может быть и локальная сеть, и веб-соединение. Поток данных, направленный в файл или из файла, ничем не отличается от потока данных, идущего по сети. Итак, поток (stream) - это абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. С помощью потока можно читать данные из различных источников (клавиатура, файл) и записывать в различные источники (принтер, экран, файл). Поток обеспечивает общую возможность взаимодействия с последовательностями байтов, независимо от того, на устройстве какого вида (в файле, сетевом соединении, принтере и т.п.) они хранятся или отображаются. Потоки обеспечивают надежную работу, как со стандартными типами данных, так и с определенными пользователем типами данных.
C#-система ввода-вывода построена на иерархии классов, определенной в пространстве имен System.IO. Несмотря на то, что потоки связываются с различными физическими устройствами, характер поведения всех потоков одинаков. Поэтому классы и методы ввода-вывода можно применить ко многим типам устройств.
На самом низком уровне C#-система ввода-вывода оперируют байтами. Это объясняется тем, что многие устройства при выполнении операций ввода-вывода ориентированы на байты. Однако для человека привычнее иметь дело с символами. Вспомним, что в C# тип char – это 16-разрядный тип, а тип byte – 8-разрядный. Преобразование типа char в byte для Unicode –символов, которым необходимы два байта, не сработает. Таким образом, байтовые потоки не вполне подходят для обработки текстового (ориентированного на символы) ввода-вывода. Поэтому разработаны символьные потоки, которые фактически представляют собой оболочки, выполняющие преобразование байтовых потоков в символьные и наоборот (byte -> char и char -> byte).
Любое приложение, использующее пространство имен System (включена инструкция using System;), может пользоваться тремя стандартными (встроенными) потоками, доступ к которым осуществляется через следующие свойства классов TextWriter и TextReader:
Console.In – относится к стандартному входному потоку (по умолчанию это клавиатура). Например, при вызове метода Console.ReadLine() информация автоматически передается в этот поток;
Console.Out – относится к стандартному выходному потоку (по умолчанию это консоль). Например, при вызове метода Console.WriteLine() информация автоматически передается в этот поток;
Console.Error – относится к ошибкам в стандартном потоке, источником которого по умолчанию является консоль.
Эти потоки могут быть перенаправлены на любое совместимое устройство ввода-вывода. Стандартные потоки являются символьными, т.е. они считывают и записывают символы.