Чтение бинарного файла С#

142
22 мая 2019, 21:50

Необходимо считать матрицу с бинарного файла (расширение .dat ) где первые два элемента идут целые числа указывающие количество строк и столбцов а затем элементы построчно. Прошу помощи

Answer 1

Я предполагаю что тебя интересует сериализация.

То есть ты сначала сохраняешь данные, а потом считываешь их.

То есть ты создаешь свой личный класс

[Serializable]
public MyBinaryClass
{
//заполняешь всем, что тебе нужно
}

А потом используешь

public static class Serializator
{
    public static void Serialize(string pathOrFileName, object objToSerialise)
    {
        using (Stream stream = File.Open(pathOrFileName, FileMode.Create))
        {
            BinaryFormatter bin = new BinaryFormatter();
            bin.Serialize(stream, objToSerialise);
        }
    }
    public static T Deserialize<T>(string pathOrFileName) 
    {
        T items;
        using (Stream stream = File.Open(pathOrFileName, FileMode.Open))
        {
            BinaryFormatter bin = new BinaryFormatter();
            items = (T) bin.Deserialize(stream);
        }
        return items;
    }
}

следующим образом:

MyBinaryClass someMatrix = new MyBinaryClass();
Serializator.Serialize("data.dat", someMatrix);//пример сохранения
someMatrix = Serializator.Deserialize<MyBinaryClass >("data.dat");//пример подгрузки

PS: если файл УЖЕ существует, то это скорее всего не сработает.

Answer 2

С выше описанного ТЗ сделал предположения:

    public static Int32[,] ReaderArray(String path)
    {
        Int32[,] a = null;
        // создаем объект BinaryReader
        using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
        {
            // пока не достигнут конец файла
            // считываем каждое значение из файла
            while (reader.PeekChar() > -1)
            {
                var n = reader.ReadInt32();
                var m = reader.ReadInt32();
                a = new Int32[n, m];
                for (Int32 i = 0; i < a.GetLength(0); i++)
                {
                    for (Int32 j = 0; j < a.GetLength(1); j++)
                    {
                        a[i, j] = reader.ReadInt32();
                    }
                }
            }
        }
        return a;
    }
READ ALSO
Sublime Text 3 Plugins

Sublime Text 3 Plugins

Такой вопрос, использовал раньше VisualStudio сейчас перешёл на Sublime в связи с тем что он "легче" для системыВ Visual есть команда #region и #endregion которая...

136
Аналог nameof для XAML

Аналог nameof для XAML

Нужно хранить локализованные названия свойств классов в словаре ресурсовСейчас делаю это так:

134
Как отключить мышку?

Как отключить мышку?

Начну с того, что я конкретно хочу сделать: Иногда совсем не хочется вставать с кровати но при этом вырубить монитор здесь и сейчасЯ хочу сделать...

165
Как копию сайта перенести на новый домен и на новую админку?

Как копию сайта перенести на новый домен и на новую админку?

Подскажите пожалуйста, как копию сайта Drupal перенести на новый домен и новую админку?

124