/// <summary>
        /// Loads the input file stream into memory.
        /// </summary>
        /// <param name="inputStream"></param>
        /// <returns></returns>
        public bool Deserialize(RandomAccessFile inputStream)
        {
            try
            {
                var elementCount = inputStream.readInt();

                for (int elementIndex = 0; elementIndex < elementCount; ++elementIndex)
                {
                    var elementTypeOrdinal = inputStream.readInt();
                    var elementType        = (VariableLengthRecord.RecordElementType)elementTypeOrdinal;
                    var size = inputStream.readInt();

                    String value = String.Empty;

                    if (size == inputStream.read(ref value, size))
                    {
                        RecordElement recordElement = new
                                                      RecordElement(elementType, value);

                        mElements.Add(recordElement);
                    }
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        /// <summary>
        /// Outputs the elements in memory into the specified output file.
        /// </summary>
        /// <param name="outputStream"></param>
        /// <returns></returns>
        public int Serialize(RandomAccessFile outputStream)
        {
            try
            {
                var elementCount     = GetCount();
                var startingLocation = (int)outputStream.getFilePointer();
                outputStream.writeInt(elementCount);
                var location = (int)outputStream.getFilePointer();

                for (int elementIndex = 0; elementIndex < elementCount; ++elementIndex)
                {
                    var ordinal = (int)mElements[elementIndex].mType;
                    outputStream.writeInt((int)mElements[elementIndex].mType);  // Convert to ordinal

                    location = (int)outputStream.getFilePointer();
                    outputStream.writeInt(mElements[elementIndex].mSize);
                    location = (int)outputStream.getFilePointer();
                    outputStream.writeBytes(mElements[elementIndex].mText);
                    location = (int)outputStream.getFilePointer();
                }

                var bytesWritten = (int)outputStream.getFilePointer() - startingLocation;

                return(bytesWritten);
            }
            catch (Exception)
            {
                return(0);
            }
        }
Exemple #3
0
        public VariableLengthRecordFile(String folder, String filename)
        {
            mPathname  = folder;
            mPathname += ("/");
            mPathname += (filename);
            mPathname += (".dat");

            mFileStream = new RandomAccessFile(mPathname);
            if (mFileStream.length() > 0)
            {
                mFileStream.seek(0);
                mBytesUsed = mFileStream.readInt();
            }
            else
            {
                mBytesUsed = 0;
                mFileStream.writeInt(mBytesUsed);
            }
        }