Двоичные файлы для загрузки в программу Дв. файлы с последовательным доступом к записям

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002160.docx

Двоичные файлы для загрузки в программу

Дв. файлы с последовательным доступом к записям

 

Для сохранения данных в файле и последующей загрузки файла в программу. Просмотр текстовым редактором бессмысленен.


1.   Запись представляет собой совокупность отдельных переменных, которые могут составлять информационную часть объекта.

 

Примечание.

А. Для вывода и ввода записей рекомендуется использовать двоич- ный поток, создаваемый классами BinaryWriter и BinaryReader.

Б. Понятие записи в этом случае – это логическое объединение данных, например, одного объекта. В отличие от строк, двоичные дан- ные друг от друга ничем не отделяются.

 

Форматирование:

не требуется, так как данные выводятся в их внутреннем (двоичном)

формате.

 

Вывод данных в файл:

 

FileStream fs;

 

int                 i    = 10;

double          d = 1023.56;

string                        str = "Привет студентам!";

 

fs = new FileStream ("testdata", FileMode.Create); BinaryWriter dataOut = new BinaryWriter (fs); dataOut.Write (i);

dataOut.Write (d); dataOut.Write (str);

 

Чтение и загрузка в базу данных:

только последовательное методами Read...() в цикле:

 

fs = new FileStream ("testdata", FileMode.Open); BinaryReader dataIn = new BinaryReader(fs);

 

i     = dataIn.ReadInt32();

d    = dataIn.ReadDouble(); str = dataIn.ReadString();

 

2.  Сохранение и восстановление объектов.

 

Примечание. Для вывода и ввода объектов рекомендуется исполь- зовать сериализацию (сохранение) и десериализацию (восстановление) объектов.

 

using System; using System.IO;

using System.Runtime.Serialization;

using System.Runtime.Serialization.Formatters.Binary;

 

[Serializable] class Student

{


private int      kurs ;      // номер курса

private string fio;                      // Фамилия студента

 

public Student (int k, string f)

{ kurs = k;    fio = f; }

}

 

class SaveObj

{

public static void Main()

{

FileStream fs;

 

Student st1 = new Student (1, "Тенишева"); Student st2 = new Student (2, "Иванов");

 

// Создание потока

fs = new FileStream ("Student.dat", FileMode.Create);

 

// Воспользуемся двоичным форматированием

BinaryFormatter bf = new BinaryFormatter();

 

// Сохраним объект в файле в двоичном виде bf.Serialize (fs, st1);      bf.Serialize (fs, st2); fs.Close();

 

// Восстановим из файла сериализованный объект

fs = new FileStream ("Student.dat", FileMode.Open);

 

Student newSt1 = (Student) bf.Deserialize (fs); Student newSt2 = (Student) bf.Deserialize (fs);

}

}