Работа со структурами в бинарном файле - C#
Формулировка задачи:
Здравствуйте, прошу мне помочь с одной проблемой. При работе над файлом, я создал структуру:
И записал в файл:
Произвожу вывод без проблем:
Так все работает, но стоит мне добавить еще одну структуру и по аналогии все записать и вывести уже в существующий файл с информацией, как вылезает ошибка:
Листинг программы
- struct StateHaircut
- {
- public string id;
- public string name;
- public int cost;
- public StateHaircut(string _id, string _name, int _cost)
- {
- id = _id;
- name = _name;
- cost = _cost;
- }
- }
Листинг программы
- public void WriteHaircut(string path)
- {
- StateHaircut[] states = new StateHaircut[1];
- states[0] = new StateHaircut("g", "Classical", 15);
- using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate)))
- {
- // записываем в файл значение каждого поля структуры
- foreach (StateHaircut s in states)
- {
- writer.Write(s.id);
- writer.Write(s.name);
- writer.Write(s.cost);
- }
- }
- }
Листинг программы
- public void OutputHaircut(string path)
- {
- // создаем объект BinaryReader
- using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
- {
- // пока не достигнут конец файла
- // считываем каждое значение из файла
- while (reader.PeekChar() > -1)
- {
- string id = reader.ReadString();
- string name = reader.ReadString();
- int cost = reader.ReadInt32();
- Console.WriteLine("ID: {0} имя: {1} цена: {2}",
- id, name, cost);
- }
- }
- }
Слишком много байт в типе, который должен быть в 7-разрядной кодировке Int32.
Вопрос, как мне работать с несколькими структурами? Записывать и выводить определенную информацию через нужные мне структуры? Как пример: Struct Person, Order т.д...
Или я так понял это невозможно. Нужно каждую структуру использовать в отдельном файле?
Решение задачи: «Работа со структурами в бинарном файле»
textual
Листинг программы
- struct StatePerson
- {
- public string id;
- public string name;
- public string firstName;
- public string LastName;
- public string role;
- public string login;
- public string password;
- public StatePerson(string _id, string _name, string _firstName, string _LastName, string _role, string _login, string _password)
- {
- id = _id;
- name = _name;
- firstName = _firstName;
- LastName = _LastName;
- role = _role;
- login = _login;
- password = _password;
- }
- }
- struct StateHaircut
- {
- public string id;
- public string name;
- public int cost;
- public StateHaircut(string _id, string _name, int _cost)
- {
- id = _id;
- name = _name;
- cost = _cost;
- }
- }
- class Display
- {
- public void WritePerson(string path)
- {
- StatePerson[] states = new StatePerson[1];
- states[0] = new StatePerson("h", "Aleksey", "familiya", "otch", "Администратор", "Symbx", "123");
- using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate)))
- {
- // записываем в файл значение каждого поля структуры
- foreach (StatePerson s in states)
- {
- writer.Write(s.id);
- writer.Write(s.name);
- writer.Write(s.firstName);
- writer.Write(s.LastName);
- writer.Write(s.role);
- writer.Write(s.login);
- writer.Write(s.password);
- }
- }
- }
- public void WriteHaircut(string path)
- {
- StateHaircut[] states = new StateHaircut[1];
- states[0] = new StateHaircut("g", "Classical", 15);
- using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate)))
- {
- // записываем в файл значение каждого поля структуры
- foreach (StateHaircut s in states)
- {
- writer.Write(s.id);
- writer.Write(s.name);
- writer.Write(s.cost);
- }
- }
- }
- public void OutputPerson(string path)
- {
- // создаем объект BinaryReader
- using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
- {
- // пока не достигнут конец файла
- // считываем каждое значение из файла
- while (reader.PeekChar() > -1)
- {
- string id = reader.ReadString();
- string name = reader.ReadString();
- string firstName = reader.ReadString();
- string LastName = reader.ReadString();
- string role = reader.ReadString();
- string login = reader.ReadString();
- string password = reader.ReadString();
- Console.WriteLine("ID: {0} имя: {1} фамилия: {2} отчество: {3} логин: {4} роль: {5} пароль: {6}",
- id, name, firstName, LastName, role, login, password);
- }
- }
- }
- public void OutputHaircut(string path)
- {
- // создаем объект BinaryReader
- using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
- {
- // пока не достигнут конец файла
- // считываем каждое значение из файла
- while (reader.PeekChar() > -1)
- {
- string id = reader.ReadString();
- string name = reader.ReadString();
- int cost = reader.ReadInt32();
- Console.WriteLine("ID: {0} имя: {1} цена: {2}",
- id, name, cost);
- }
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- string path= @"haircut.dat";
- Display dis = new Display();
- dis.WriteHaircut(path);
- dis.WritePerson(path);
- dis.OutputPerson(path);
- dis.OutputHaircut(path);
- Console.ReadLine();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д