Технологии Microsoft в теории и практике программирования



Технологии Microsoft в теории и практике программирования - стр. 31


класса String, а затем полученный массив записывается в файл с помощью варианта перегруженного метода Write, принимающего в качестве параметров сам массив символов, индекс первого символа и длину массива. Для достижения фиксированного размера поля может потребоваться дополнить строку некоторым символом-заполнителем с помощью методов PadRight или PadLeft или же обрезать ее до нужной длины методом Substring. Чтение массива символов из файла может быть произведено с помощью метода ReadChars

класса BinaryReader.

Другая проблема возникает в случае, если требуется записать или считать сложную структуру, состоящую из множества полей и вложенных подструктур. Если использование сериализации данных невозможно по любой причине, то может потребоваться написать алгоритм, производящий запись и считывание каждого поля индивидуально. Такой алгоритм может оказаться очень длинным и неэффективным. Возможным решением данной проблемы является использование кода с применением указателей. При этом все поля должны иметь неуправляемый тип данных (то есть: строки должны быть сведены к последовательностям однобайтовых символов, причем каждый символ должен расцениваться как индивидуальное поле; невозможно прямое применение массивов любого вида и т.п.). Для записи сложных структур в файл создается указатель типа byte*, содержащий адрес начала структуры в памяти. При этом используется явное приведение типов для сведения структуры к байтовому типу. Затем производится собственно запись данных с помощью метода Write

класса BinaryWriter. При этом количество записываемых символов определяется оператором sizeof, вычисляющим общую длину структуры в байтах. Считывание данных также производится побайтово с помощью указателя типа byte* на выделенную область памяти размером в длину структуры, вычисленную с помощью оператора sizeof. Затем производится явное приведение считанной структуры к указателю на соответствующий структурный тип и раскрытие ссылки, что позволяет непосредственно обращаться к полям структуры.




Содержание  Назад  Вперед