Como imprimir conteúdo bruto de byte de um array byte [] para stdout em Java?

Eu estou fazendo o mesmo projeto descrito aqui:

Enrole os dados esvaziados no formato gzip

Meu problema é que, quando tento imprimir bytes, obtenho resultados estranhos. Meus problemas ocorrem no seguinte código (Desculpe pela minha má escolha de variáveis):

    for(int k = 0; k < head.length; k++){
        System.out.write(head[k]);
    }

    for(int m = 0; m < a.size(); m++){
        int comprlength = a.get(m).getclength();
        for(int ii = 0; ii < comprlength; ii++){
            System.out.write(a.get(m).getcompr()[ii]);
        }
    }
    for(int j = 0; j < f1.length; j++){
        System.out.write(f1[j]);
    }
    for(int ll = 0; ll < total_d.length; ll++){
        System.out.write(total_d[ll]);
    }

Os dois últimos loops não imprimem o conteúdo dos seus arrays de bytes. Assim, recebo um erro inesperado no final do arquivo ao usar o gzip. O estranho é que, se eu comentar o segundo bloco for-loop (o bloco com as variáveis ​​me ii), nada é impresso.

Então, como faço para imprimir corretamente o conteúdo dos meus arrays de bytes? Por que o primeiro loop for impresso corretamente quando o segundo for-loop não é comentado e por que ele não imprime nada se esse segundo loop for for comentado?

EDITAR:

Para ser mais específico:

Eu quero escrever os bytes brutos. E eu quero fazer isso para que fique logo após o outro para cada um dos meus arranjos de bytes

questionAnswers(2)

yourAnswerToTheQuestion