Oct 03, 2018

Como o BufferedInputStream#read aceito não é garantido para ler tudo, em vez de manter o controle dos tamanhos do buffer, usei essa abordagem: byte bytes[] = new byte[(int) file.length()]; BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); DataInputStream dis = new DataInputStream(bis); dis.readFully(bytes); [JAVA] ByteStream : BufferedInputStream ByteStream : BufferedInputStream / BufferedOutputStream (파일 복사 예제) BufferedInputStream과 BufferedOutputStream은 FilterStream을 상속하여 실제 필터 기능을 제공하는 클래스이다. [JAVA] ByteStrea.. BufferedInputStream is slow | Oracle Community May 15, 2005

Claro que usar uma implementação interna de um JDK proprietário nem sempre é uma boa ideia. O método pode mudar ou deixar de existir em alguma versão futura. A boa notícia é que é fácil substituir por uma alternativa. Uma delas é a biblioteca Apache Commons IO, cujo método IOUtils.toString() também faz o trabalho num só passo:

Também é melhor apenas ler o stream de input em uma matriz ou string e, em seguida, criar streams de input para cada uso? EDIT 2: Desculpa reabrir a pergunta, mas as condições são um pouco diferentes quando se trabalha com aplicativos da Web e de desktop. Primeiro de tudo, o InputStream que eu recebo do org.apache.commons.fileupload

O método available() informa quantos bytes podem ser lidos até que a chamada read() bloqueie o stream de execução do seu programa. Na maioria dos streams de input, todas as chamadas para read() estão bloqueando, é por isso que retornos disponíveis 0 por padrão. No entanto, em alguns streams (como BufferedInputStream, que possuem um

Wrappers em Java: Aprenda como utilizar E o interessante, é que, esses wrappers podem ser combinados (pode-se fazer um FileInputStream, associa-lo a um BufferedInputStream e ler dados primitivos dele após associar o resultado a um DataInputStream). print - log inputstream java - Code Examples Levando em consideração o arquivo, um deve primeiro obter uma instância de java.io.Reader.Isso pode então ser lido e adicionado a um StringBuilder (não precisamos de StringBuffer se não estivermos acessando-o em vários threads e o StringBuilder for mais rápido). O truque aqui é que trabalhamos em blocos e, como tal, não precisamos de outros fluxos de buffering. java — Android: Como ler arquivos em bytes?