CSJ2K.j2k.io.BufferedRandomAccessFile.skipBytes C# (CSharp) Метод

skipBytes() публичный Метод

Skips n bytes from the input. Prior to skipping, the input should be realigned at the byte level.
If the end-of file was reached before /// all the bytes could be skipped. /// /// If an I/O error ocurred. /// ///
public skipBytes ( int n ) : int
n int The number of bytes to skip /// ///
Результат int
        public virtual int skipBytes(int n)
        {
            if (n < 0)
                throw new System.ArgumentException("Can not skip negative number " + "of bytes");
            if (n <= (maxByte - position))
            {
                position += n;
                return n;
            }
            else
            {
                seek(offset + position + n);
                return n;
            }
        }

Usage Example

Пример #1
0
        /// <summary> This method reads and buffers the tile headers, packet headers and
        /// packet data.
        /// 
        /// </summary>
        /// <param name="fi">The file to read the headers and data from
        /// 
        /// </param>
        /// <exception cref="IOException">If an I/O error ocurred.
        /// 
        /// </exception>
        private void readAndBuffer(BufferedRandomAccessFile fi)
        {
            int p, prem, length, t, markIndex;

            // Buffer main header
            fi.seek(0);
            length = ((System.Int32) positions[0]) - 2;
            mainHeader = new byte[length];
            fi.readFully(mainHeader, 0, length);
            markIndex = 0;

            for (t = 0; t < nt; t++)
            {
                prem = ppt[t];

                packetHeaders[t] = new byte[prem][];
                packetData[t] = new byte[prem][];
                sopMarkSeg[t] = new byte[prem][];

                // Read tile header
                length = positions[markIndex + 1] - positions[markIndex];
                tileHeaders[t] = new byte[length];
                fi.readFully(tileHeaders[t], 0, length);
                markIndex++;

                for (p = 0; p < prem; p++)
                {
                    // Read packet header
                    length = positions[markIndex + 1] - positions[markIndex];

                    if (tempSop)
                    {
                        // SOP marker is skipped
                        length -= CSJ2K.j2k.codestream.Markers.SOP_LENGTH;
                        fi.skipBytes(CSJ2K.j2k.codestream.Markers.SOP_LENGTH);
                    }
                    else
                    {
                        // SOP marker is read and buffered
                        length -= CSJ2K.j2k.codestream.Markers.SOP_LENGTH;
                        sopMarkSeg[t][p] = new byte[CSJ2K.j2k.codestream.Markers.SOP_LENGTH];
                        fi.readFully(sopMarkSeg[t][p], 0, CSJ2K.j2k.codestream.Markers.SOP_LENGTH);
                    }

                    if (!tempEph)
                    {
                        // EPH marker is kept in header
                        length += CSJ2K.j2k.codestream.Markers.EPH_LENGTH;
                    }
                    packetHeaders[t][p] = new byte[length];
                    fi.readFully(packetHeaders[t][p], 0, length);
                    markIndex++;

                    // Read packet data
                    length = positions[markIndex + 1] - positions[markIndex];

                    length -= CSJ2K.j2k.codestream.Markers.EPH_LENGTH;
                    if (tempEph)
                    {
                        // EPH marker is used and is skipped
                        fi.skipBytes(CSJ2K.j2k.codestream.Markers.EPH_LENGTH);
                    }

                    packetData[t][p] = new byte[length];
                    fi.readFully(packetData[t][p], 0, length);
                    markIndex++;
                }
            }
        }
All Usage Examples Of CSJ2K.j2k.io.BufferedRandomAccessFile::skipBytes