/// <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); } }
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); } }