@Override
    public int read() throws IOException {
        if (migrated || handler == null) {
            handler = new RandomAccessFile(sourceFile, "r");
            migrated = false;
            handler.seek(offset);
        }
        int result = handler.read();
        offset++;
        return result;
    }