コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: FileOps.cs プロジェクト: miquik/mkdb
        /// <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);
        }