/**
         * Reads one entry of the indexTable and return it's values in a SFOIndexTableEntry-object
         * @param fIn
         * @return SFOIndexTableEntry
         * @throws IOException
         */
        public static SFOIndexTableEntry readEntry(FileStream fIn)
        {
            SFOIndexTableEntry sfoIndexTableEntry = new SFOIndexTableEntry();

            byte[] tempByteArray1 = new byte[1];
            byte[] tempByteArray2 = new byte[2];
            byte[] tempByteArray4 = new byte[4];

            // read offsetKeyNameInKeyTable
            fIn.Read(tempByteArray2, 0, 2);
            sfoIndexTableEntry.setOffsetKeyNameInKeyTable(tempByteArray2);

            // read dataAlignmentRequirements
            fIn.Read(tempByteArray1, 0, 1);
            sfoIndexTableEntry.setDataAlignmentRequirements(tempByteArray1[0]);

            // read dataTypeValue
            fIn.Read(tempByteArray1, 0, 1);
            sfoIndexTableEntry.setDataTypeValue(tempByteArray1[0]);


            // read sizeValueData
            fIn.Read(tempByteArray4, 0, 4);
            sfoIndexTableEntry.setSizeValueData(SFOReaderUtilities.byteArrayReverseToInt(tempByteArray4));

            // read sizeValueDataAndPadding
            fIn.Read(tempByteArray4, 0, 4);
            sfoIndexTableEntry.setSizeValueDataAndPadding(SFOReaderUtilities.byteArrayReverseToInt(tempByteArray4));

            // read offsetDataValueInDataTable
            fIn.Read(tempByteArray4, 0, 4);
            sfoIndexTableEntry.setOffsetDataValueInDataTable(SFOReaderUtilities.byteArrayReverseToInt(tempByteArray4));

            return(sfoIndexTableEntry);
        }
Exemple #2
0
        /**
         * Reads an entry of the dataValueTable an return it as String
         *
         * @param fIn
         * @param sfoIndexTableEntry
         * @return String
         * @throws IOException
         */
        public String readEntry(FileStream fIn, SFOIndexTableEntry sfoIndexTableEntry)
        {
            byte[] entryByteArray = new byte[sfoIndexTableEntry.getSizeValueData()];

            fIn.Read(entryByteArray, 0, sfoIndexTableEntry.getSizeValueData());
            valueBytesReaded += sfoIndexTableEntry.getSizeValueData();

            long offsetNextValue = sfoIndexTableEntry.getOffsetDataValueInDataTable() + sfoIndexTableEntry.getSizeValueDataAndPadding();       // korrekt!
            long skipBytes       = (offsetNextValue) - valueBytesReaded;

            fIn.Seek(skipBytes, SeekOrigin.Current);
            valueBytesReaded += Convert.ToInt32(skipBytes);

            return(SFOReaderUtilities.byteArrayToString(entryByteArray, true));
        }