Problemas em copiar um inputstream para outputstream

Pessoal,

Estou tentando copiar um InputStream para um OutputStream mas o número de bytes copiado é sempre menor que o original. Então o documento de saida fica faltando parte do conteudo.

isso acontece para ambos os códigos abaixo:

[code] InputStream documentoAAgrupar = (InputStream) documentos.get(i);
ByteArrayOutputStream streamDocumentoAAgrupar = new ByteArrayOutputStream();

  byte[] b = new byte[1024]; // don't create an array the size of the file!
  int c =0;
  while((c = documentoAAgrupar.read(b))>0)
  {
    streamDocumentoAAgrupar.write(b, 0, c);
  }
  streamDocumentoAAgrupar.close(); // put this in a finally block, actually
  [/code]

IOUtils.copy(documentoAAgrupar, streamDocumentoAAgrupar); streamDocumentoAAgrupar.close();

Alguem tem alguma sugestão?

[code]