public void process ( File file ) throws Exception { openLogFile ( ) ; int blockIndex = 0 ; int length = ( int ) file . length ( ) ; m_buffer = new byte [ length ] ; FileInputStream is = new FileInputStream ( file ) ; try { int bytesRead = is . read ( m_buffer ) ; if ( bytesRead != length ) { throw new RuntimeException ( "Read count different" ) ; } } finally { is . close ( ) ; } List < Integer > blocks = new ArrayList < Integer > ( ) ; for ( int index = 64 ; index < m_buffer . length - 11 ; index ++ ) { if ( matchPattern ( PARENT_BLOCK_PATTERNS , index ) ) { blocks . add ( Integer . valueOf ( index ) ) ; } } int startIndex = 0 ; for ( int endIndex : blocks ) { int blockLength = endIndex - startIndex ; readBlock ( blockIndex , startIndex , blockLength ) ; startIndex = endIndex ; ++ blockIndex ; } int blockLength = m_buffer . length - startIndex ; readBlock ( blockIndex , startIndex , blockLength ) ; closeLogFile ( ) ; }
Read a FastTrack file .