Лабораторная работа 4. Тема: Создание MDI-приложений

Тема: Создание MDI-приложений. Сериализация объектов.

Использование стандартных диалогов для сохранения и

Загрузки данных программы

Цель работы:

- Изучить особенности MDI приложений и способы их создания в Visual Studio.Net.

- Сохранение данных в файл и загрузки из файла.

- Освоить механизм сериализации и десериализации объектов.

- Освоить применение стандартных диалогов сохранения и загрузки данных в приложение.

 

Теоретические сведения

 

Операции ввода/вывода данных в.NЕТ

Данные могут рассматриваться как поток байтов, символов или объектов. Чтение и запись объектов называются соответственно преобразованием из последовательной формы в параллельную и преобразованием в последовательную форму (сериализацией). Сериализация объектов может осуществляться в двух форматах: бинарном и XML-формате.

В пространстве имен System.IO есть несколько классов для чтения и записи, позволяющих использовать различные устройства хранения, если только данные можно трактовать как байты или символы.

Пространство имен System.Runtime.Serialization используется для сериализации в общей системе типов (Common Type System). Пространство имен System.Xml.Serialization используется для сериализации XML-документов.

 

Потоковые классы

Stream — абстрактный класс, который является базовым для чтения и записи байтов в некоторое хранилище данных. Этот класс поддерживает синхронные и асинхронные чтение и запись. Класс Stream содержит типичные и вполне ожидаемые от такого класса методы: Read, Write, Seek, Flush и Close.

Класс FileStream, который является производным от класса Stream, предоставляет операции чтения и записи последовательности байтов в файл. Конструктор FileStream создает экземпляр потока. Перегруженные методы класса Stream осуществляют чтение и запись в файл. У класса Stream есть и другие производные классы: MemoryStream, BufferedStream и NetworkStream (в System.Net.Sockets).

 

// Программа 1. Запись и чтение 10 байт в/из файл. Пример нужно выполнить дважды. Первый раз программа создаст файл и запишет в него числа, а во второй раз прочитает и распечатает часть файла

using System.IO;

void Main() {

byte [] data = new byte [10];

FileStream fs = new FileStream("FileStreamTest.txt", FileMode.OpenOrCreate);

if (fs.Length == 0) {

Console.WriteLine("Writing Data...");

for (short i = 0; i < 10; i++)

data[i] = (byte)i;

Fs.Write(data, 0, 10); // Запись данных

}

else {

Fs.Seek(-5, SeekOrigin.End); // Ищем конец

int count = fs.Read(data, 0, 10); // Чтение данных

for (int i = 0; i < count; i++) {

Console.WriteLine(data[i]);

}

}

fs.Close();

}

Встроенные типы данных и потоки

Классы, производные от Stream, целесообразно использовать тогда, когда нужно читать или писать байты данных блоками. Если необходимо прочитать в поток или записать из потока простой тип, такой как Boolean, String или Int32, следует использовать классы BinaryReader и BinaryWriter. Нужно создать соответствующий поток (напимер, FileStream) и передать его в качестве параметра в конструктор BinaryReader или BinaryWriter. Потом можно использовать один из перегруженных методов Read или Write для чтения данных из потока или записи данных в поток.

 

// Программа 2. Запись и чтение 10 чисел в/из файл. Пример нужно выполнить дважды. Сначала файл создается и в него записываются данные. Во второй раз данные читаются из файла.

void Main() {

FileStream fs = new FileStream("BinaryTest.bin", FileMode.OpenOrCreate);

if (fs.Length == 0) {

Console.WriteLine("Writing Data...");

BinaryWriter w = new BinaryWriter(fs);

for (short i = 0; i < 10; i++)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: