code: 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();
     }
docs: Read a FastTrack file.
  
  @param file FastTrack file