/// <summary> /// *** NOT FOR PRODUCTION USE, LACKS ERROR CHECKING *** /// Allows performance testing of all insert stragegies /// *** NOT FOR PRODUCTION USE, LACKS ERROR CHECKING *** /// </summary> public static void InsertBytes(byte[] bytes, string filename, long position, int bfrSz, InsertStrategies strategy) { // Length of file before insert: long fileLen = new FileInfo(filename).Length; // Move the bytes after our insert position to make room for // the bytes we're inserting, in one fell swoop: switch (strategy) { case InsertStrategies.UseTransposeForward: // Extend the target file to accomodate bytes[]: SetFileLen(filename, fileLen + bytes.Length); transposeForward(filename, position, position + bytes.Length, fileLen - position, bfrSz); break; case InsertStrategies.UseTargetAsTempFile: InsertBytesUsingEOFTemp(bytes, filename, position); break; case InsertStrategies.UseTransposeReverse: // Extend the target file to accomodate bytes[]: SetFileLen(filename, fileLen + bytes.Length); // Transpose will automatically use TransposeReverse: transposeReverse(filename, position, position + bytes.Length, fileLen - position, bfrSz); break; } // Then write in the desired bytes and we're done: WriteBytes(bytes, filename, position); }
/// <summary> /// *** NOT FOR PRODUCTION USE, LACKS ERROR CHECKING *** /// Allows performance testing of all insert stragegies /// *** NOT FOR PRODUCTION USE, LACKS ERROR CHECKING *** /// </summary> public static void InsertBytes(byte[] bytes, string filename, long position, int bfrSz, InsertStrategies strategy) { // Length of file before insert: long fileLen = new FileInfo(filename).Length; // Move the bytes after our insert position to make room for // the bytes we're inserting, in one fell swoop: switch(strategy) { case InsertStrategies.UseTransposeForward: // Extend the target file to accomodate bytes[]: SetFileLen(filename, fileLen + bytes.Length); transposeForward(filename, position, position + bytes.Length, fileLen - position, bfrSz); break; case InsertStrategies.UseTargetAsTempFile: InsertBytesUsingEOFTemp(bytes, filename, position); break; case InsertStrategies.UseTransposeReverse: // Extend the target file to accomodate bytes[]: SetFileLen(filename, fileLen + bytes.Length); // Transpose will automatically use TransposeReverse: transposeReverse(filename, position, position + bytes.Length, fileLen - position, bfrSz); break; } // Then write in the desired bytes and we're done: WriteBytes(bytes, filename, position); }