Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
1

Чтение структур из файла в двоичном виде

04.02.2022, 16:34. Показов 385. Ответов 2

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, как определить конец файла при чтении структур в двоичном виде из файла, не генерируя исключение?
Все дело в том, что в файле неизвестно точное количество данных.
В приведенном ниже коде (который как пишет Studio устарел) я не могу определить сколько элементов перебрал.
(Мне не нужно создавать массив данных структур, он может быть очень большим). Нужно пока найти минимальный и максимальный элементы, потом средние значения, потом может автокорреляционную функцию и т.д.)
Может есть какой-то другой способ (JSON и XML сериализаторы не очень желательны, да и у них как я понимаю нельзя написать (while(end_of_file))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
 
namespace Read_Write_Strucrure
{
    class Program
    {
        [Serializable]
         struct Curve
        {
            public int x;
            public int y;
            public bool ind;
            public string str;
        }
        static void Main(string[] args)
        {
 
            Curve my_curve = new Curve() { x = 10, y = 20, ind = true, str = "Точка разлома" };
            Curve my_curve1 = new Curve() { x = 11, y = 21, ind = true, str = "Точка перегиба" };
            Curve my_curve2 = new Curve() { x = 12, y = 22, ind = false, str = "Точка разрыва" };
 
 
            using (FileStream stream = File.Open(@"C:\Users\Rad\Desktop\111.sss", FileMode.Create))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(stream, my_curve);
                bf.Serialize(stream, my_curve1);
                bf.Serialize(stream, my_curve2);
 
            }
            using (FileStream stream = File.Open(@"C:\Users\Rad\Desktop\111.sss", FileMode.Open))
            {
                BinaryFormatter bf = new BinaryFormatter();
 
                Curve newcurve1 = (Curve)bf.Deserialize(stream);
 
                Console.WriteLine("Объект десериализован");
                Console.WriteLine($"X: {newcurve1.x} --- Y: {newcurve1.y}----str:{newcurve1.str}\n");
                Curve newcurve2 = (Curve)bf.Deserialize(stream);
 
                Console.WriteLine("Объект десериализован");
                Console.WriteLine($"X: {newcurve2.x} --- Y: {newcurve2.y}----str:{newcurve2.str}\n");
 
                my_curve = (Curve)bf.Deserialize(stream);
                Console.WriteLine("Объект десериализован My CUrve");
                Console.WriteLine($"X: {my_curve.x} --- Y: {my_curve.y}----str:{my_curve.str}\n");
 
                try 
                { my_curve1 = (Curve)bf.Deserialize(stream);
                    Console.WriteLine("Объект десериализован  ЭТОТ ОБЪЕКТ НЕ ЗАПИСЫВАЛСЯ ");
                    Console.WriteLine($"X: {my_curve1.x} --- Y: {my_curve1.y}----str:{my_curve1.str}\n");
                }
 
                catch (Exception e )
                {
                    Console.WriteLine($"Предсказуемо произошло исключение: {e}");
                }
                finally { stream.Close(); }
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 2 минуты
Еще хотел уточнить
в блоке finally

C#
1
stream.Close();
надо закрывать поток, или блок using автоматически сработает и освободит память?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2022, 16:34
Ответы с готовыми решениями:

Чтение файла, представление его в двоичном виде
Здравствуйте, подскажите пожалуйста .Я представлял картинку в двоичном виде , делал шифрование LSFR...

Запись структур в двоичном виде и текстовом с использованием C-ишных функций
Товарищи помогите с функциями! Я все время пользовался std::iostream, но преподаватель сказал...

Чтение файла в двоичном коде
Моя цель открыть любой файл в двоичном коде и записать этот код в отдельный txt файл #include...

Чтение/запись файла в двоичном формате
Пишу программу по блочным шифрам.Пишу на питоне.Возникла одна проблема.По заданию нужно открывать...

Содержимое удаленного файла в двоичном виде.
Как получить содержимое удаленного файла в двоичном виде? На запрос file_get_contents($file_url,...

2
Эксперт .NET
6507 / 4084 / 1605
Регистрация: 09.05.2015
Сообщений: 9,548
04.02.2022, 17:24 2
Stream.Position, Stream.Length?
1
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
04.02.2022, 17:39  [ТС] 3
Цитата Сообщение от Someone007 Посмотреть сообщение
Stream.Position, Stream.Length?
СПАСИБО БОЛЬШОЕ, не догадался там посмотреть.
0
04.02.2022, 17:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2022, 17:39
Помогаю со студенческими работами здесь

Создание файла Excel в двоичном виде
Здравствуйте! Кто-нибудь знает как создать файл Excel, работая с ним как с обычным двоичным...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении,...

Создать новый файл, который бы содержал целые числа из первого файла в двоичном виде.
Пожалуйста помогите срочно нужно!!! Создать файл целых чисел при вводе цифр с клавиатуры....

Клиент читает из файла несколько пар чисел, отправляет их на сервер в двоичном виде, получает произведение
Клиент читает из файла несколько пар чисел, отправляет их на сервер в двоичном виде, получает...

Чтение структур с файла
Я записал структуру в файл! В файле лежит структура троих студентов. Как мне вывести из файла...

Чтение структур из файла
Постройте программу, которая работает с базой данных в виде типизированного файла. Если нужно, за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru