用 sequential 方式写入的数据,前后会多一个 integer 来表示当前记录的长度。
所以用 stream 读取的时候,需要用一个 integer 来占位。(例子中的m)
[Fortran] 纯文本查看 复制代码 Program PointTS
Implicit none
Integer(kind=4) :: i, j, k = 0, m
Real(kind=8) :: EETIME=1,EETIME_1
Integer(kind=4), Allocatable,dimension(:,:) :: KSZ_Global, KSZ_Global_1
Allocate(KSZ_Global(2,3),KSZ_Global_1(2,3))
Do i = 1, 3
Do j = 1,2
KSZ_Global(j,i) = i+j+k
k = k + 1
End Do
End Do
Open(Unit=32,File="Matrix.bin",Status="replace",Access='sequential',FORM='unformatted')
Do k = 1, 3
Write(32) EETIME
Write(32) KSZ_Global
EETIME = EETIME + 1.0
KSZ_Global = KSZ_Global + 1
End Do
Close(32)
Open(Unit=32,File="Matrix.bin",Status="old",Access='stream')
Do k = 1, 3
Read(32) m,EETIME_1,m
Read(32) m,KSZ_Global_1,m
Write(*,*) EETIME_1
Write(*,*) KSZ_Global_1
End Do
Close(32)
End Program PointTS |