как сериализовать / десериализовать arrayList (Object)

Я никогда не использовал последовательный доступ с неформатированным выходом по этой точной причине. Однако это зависит от приложения, и иногда удобно иметь индикатор длины записи (особенно для неструктурированных данных). Как было предложено steabert в . Глядя на двоичный вывод fortran на gnuplot , вы можете избежать этого, используя аргумент ключевого слова ACCESS = 'DIRECT', и в этом случае вам нужно указать длину записи. Этот метод удобен для эффективного хранения больших многомерных структурированных данных (постоянная длина записи). Следующий пример записывает неформатированный файл, размер которого равен размеру массива:

REAL(KIND=4),DIMENSION(10) :: a = 3.141
INTEGER                    :: reclen

INQUIRE(iolength=reclen)a
OPEN(UNIT=10,FILE='direct.out',FORM='UNFORMATTED',&
     ACCESS='DIRECT',RECL=reclen)
WRITE(UNIT=10,REC=1)a
CLOSE(UNIT=10)

END

Обратите внимание, что это не идеальный aproach в смысле переносимости. В неформатированном файле, написанном с прямым доступом, нет информации о размере каждого элемента. Текстовый файл readme, описывающий размер данных, отлично подходит для меня, и я предпочитаю этот метод вместо заполнения в последовательном режиме.

14
задан user207421 11 July 2012 в 23:53
поделиться