Работа со структурами в бинарном файле - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д