- •1)Классы: индексаторы, операции классов.
- •Метод Main
- •Операции класса
- •Унарные операции
- •Implicit operator тип ( параметр ) // неявное преобразование
- •Вложенные типы
- •2) Интерфейсы: синтаксис, реализация, операции is и as.
- •Сравнение объектов (интерфейс iComparable)
- •Реализация интерфейса
- •Операции is и as
- •Перебор объектов (интерфейс iEnumerable) и итераторы
- •4) Структуры. Перечисления.
- •Операции с перечислениями
- •5)Делегаты. Передача делегатов в методы.
- •Передача делегатов в методы
- •6)Паттерн «наблюдатель».
- •7) События. Использование стандартных делегатов.
- •8) Общая характеристика многопоточных приложений.
- •9) Класс Thread.
- •Основные элементы
- •Interrupt Метод Прерывает работу текущего потока
- •10) Асинхронные делегаты.
- •11) Общая характеристика процессов ввода-вывода.
- •Основные классы пространства имен System.Ю
- •Выполнять обмен с внешними устройствами можно на уровне:
- •12) Потоки байтов.
- •Элементы класса Stream
- •14) Потоки символов.
- •15) Двоичные потоки.
- •16) Консольный ввод-вывод.
- •17) Работа с каталогами и файлами.
- •Свойства класса FileSystemlnfo
- •18) Сохранение объектов (сериализация)
- •22)Атрибуты.
- •23)Пространства имен.
- •Директивы препроцессора
- •25) Абстрактные структуры данных.
- •Интерфейсы пространства имен System.Collections
- •Коллекции пространства имен System.Collections
- •Основные элементы класса ArrayList
- •Item Свойство Получить или установить значение элемента по заданному индексу
- •27) Классы-прототипы.
- •28) Обобщенные методы. Частичные типы. Обнуляемые типы.
- •29) Основные особенности Windows-приложений.
- •30) Событийно-управляемое программирование.
- •31) Шаблон Windows-приложения.
- •Основные типы Windows.Forms
- •Некоторые основные свойства класса Control
- •33) Класс Form.
- •Некоторые свойства класса Form
- •34) Диалоговые окна.
- •35) Класс Application.
- •Некоторые основные элементы класса Application
- •36) Введение в графику.
- •Основными объектами, которые при этом используются, являются объекты классов:
- •37) Утилитарные типы System.Drawing.
- •Некоторые базовые типы пространства имен System.Drawing
Выполнять обмен с внешними устройствами можно на уровне:
• двоичного представления данных (BinaryReader, BinaryWriter);
• байтов (FileStream);
• текста, то есть символов (StreamWriter, StreamReader).
Доступ к файлам может быть последовательным, когда очередной элемент можно прочитать (записать) только после аналогичной операции с предыдущим элементом, и произвольным, или прямым, при котором выполняется чтение (запись) произвольного элемента по заданному адресу. Текстовые файлы позволяют выполнять только последовательный доступ, в двоичных и байтовых потоках можно использовать оба метода. Прямой доступ в сочетании с отсутствием преобразований обеспечивает высокую скорость получения нужной информации.
Использование классов файловых потоков в программе предполагает следующие операции:
1. Создание потока и связывание его с физическим файлом.
2. Обмен (ввод-вывод).
3. Закрытие файла.
Значения перечисления FileAccess
Read Открыть файл только для чтения
ReadWrite Открыть файл для чтения и записи
Write Открыть файл только для записи
Значения перечисления FileMode
Append Открыть файл, если он существует, и установить текущий указатель в конец файла. Если файл не существует, создать новый файл
Create Создать новый файл. Если в каталоге уже существует файл с таким же именем, он будет стерт
CreateNew Создать новый файл. Если в каталоге уже существует файл с таким же именем, возникает исключение IOException Open " Открыть существующий файл
OpenOrCreate Открыть файл, если он существует. Если нет, создать файл с таким именем
Truncate Открыть существующий файл. После открытия он должен быть обрезан до нулевой длины
12) Потоки байтов.
Ввод-вывод в файл на уровне байтов выполняется с помощью класса FilleStream, который является наследником абстрактного класса Stream, определяющего набор стандартных операций с потоками.
Элементы класса Stream
BeginRead, BeginWrite Начать асинхронный ввод или вывод
CanRead, CanWrite CanSeek Свойства, определяющие, какие операции поддерживает поток: чтение , прямой доступ и/или запись
Сlose Закрыть текущий поток и освободить связанные с ним ресурсы (сокеты, указатели на файлы и т. п.)
EndRead, EndWrite Ожидать завершения асинхронного ввода; закончить асинхронный вывод
Flush Записать данные из буфера в связанный с потоком источник данных и очистить буфер. Если для данного потока буфер не используется, то этот метод ничего не делает
Length Возвратить длину потока в байтах
Position Возвратить текущую позицию в потоке
Read, ReadByte Считать последовательность байтов (или один байт) из текущего потока и переместить указатель в потоке на количество считанных байтов
Seek Установить текущий указатель потока на заданную позицию
SetLength Установить длину текущего потока
Write, WriteByte Записать последовательность байтов (или один байт) в текущий поток и переместить указатель в потоке на количество записанных байтов
Класс FileStream реализует эти элементы для работы с дисковыми файлами. Для определения режимов работы с файлом используются стандартные перечисления FileMode, FileAccess и FileShare
В случае непредвиденных ситуаций среда выполнения генерирует различные исключения, обработку которых следует предусмотреть в программе, например:
FileNotFoundException, если файла с указанным именем в указанном каталоге не существует;
DirectoryNotFoundException, если не существует указанный каталог;
Argument Exception, если неверно задан режим открытия файла;
IOException, если файл не открывается из-за ошибок ввода-вывода.
13) Асинхронный ввод-вывод.
Класс Stream (и, соответственно, FileStream) поддерживает два способа выполнения операций ввода-вывода: синхронный и асинхронный. По умолчанию файлы открываются в синхронном режиме, то есть последующие операторы выполняются только после завершения операций ввода-вывода. Для длительных файловых операций более эффективно выполнять ввод-вывод асинхронно, в отдельном потоке выполнения1. При этом в первичном потоке можно выполнять другие операции.
Для асинхронного ввода-вывода необходимо открыть файл в асинхронном режиме, для этого используется соответствующий вариант перегруженного конструктора. Асинхронная операция ввода инициируется с помощью метода BeginRead. Помимо характеристик буфера, в который выполняется ввод, в этот метод передается делегат, задающий метод, выполняемый после завершения ввода.
Этот метод может инициировать обработку полученной информации, возобновить операцию чтения или выполнить любые другие действия, например, проверить успешность ввода и сообщить о его завершении. Обычно в этом методе вызывается метод EndRead, который завершает асинхронную операцию.
Аналогично выполняется и асинхронный вывод.
