Пример #1
0
        static bool SkipRecord(BinaryReader br, Endian endian, HeaderWidth width)
        {
            byte[] b1 = new byte[(int)width];
            byte[] b2 = new byte[(int)width];

            if (br.Read(b1, 0, (int)width) < (int)width)
                return false;

            if (endian != Endian.Little)
                b1 = b1.Reverse().ToArray();

            Int32 n1 = BitConverter.ToInt32(b1, 0);

            br.ReadBytes(n1);

            if (br.Read(b2, 0, (int)width) < (int)width)
                return false;

            if (endian != Endian.Little)
                b2 = b2.Reverse().ToArray();

            Int32 n2 = BitConverter.ToInt32(b2, 0);

            if (n1 != n2)
                throw new ArgumentException("FORTRAN RECORD READ: Record end/start missmatch");

            return true;
        }
Пример #2
0
        public void Initialise()
        {
            _initialised = false;
            _endian = Endian.Little;
            _width = HeaderWidth.H64;

            if (!CanReadValidTitle())
            {
                _endian = Endian.Big;

                if (!CanReadValidTitle())
                {
                    _width = HeaderWidth.H32;

                    if (!CanReadValidTitle())
                    {
                        _endian = Endian.Little;

                        if (!CanReadValidTitle())
                            throw new ArgumentException("SELAFIN IMPORT: Invalid file (Endian/Machine?)");
                    }
                }
            }

            using (FileStream fs = File.OpenRead(_selafinFile.FullName))
            {
                using (BinaryReader br = new BinaryReader(fs))
                {
                    ReadHeader(br);
                }
            }

            _initialised = true;
        }