InputStream ler não lê os dados
-
12-09-2019 - |
Pergunta
Estou tendo um problema de leitura a partir de um fluxo de entrada java. I tem um tampão de tamanho 1024, e um fluxo de entrada de tamanho 29k-31k. Eu li o inputStream em um loop, mas eu só obter 29 bytes para a primeira leitura, 39 para a segunda leitura, e nada depois disso. O mesmo comportamento se repete para diferentes InputStreams. (Eu estou escrevendo os dados para um fluxo de saída, mas eu não vejo como isso pode afetar a primeira leitura)
int bytesRead = 0;
byte[] byteBuf = new byte[1024];
OutputStream fileStream = FileUtil.openFileForWrite(saveTo);
bytesRead = reader.read(byteBuf);
while(bytesRead!=-1){
fileStream.write(byteBuf, 0, bytesRead);
bytesRead = reader.read(byteBuf);
}
O que eu estou ausente?
Qualquer ajuda é apreciada:)
Solução
Onde você está recebendo o fluxo de entrada de? Como você sabe que é 29K-31K?
Seu código parece razoável para mim, embora eu geralmente estruturar o loop ligeiramente diferente para evitar a duplicação da chamada read
.
Outras dicas
Você já tentou usar readline () em vez de read ()?
Path file = ...;
InputStream in = null;
try {
in = file.newInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException x) {
System.err.println(x);
} finally {
if (in != null) in.close();
}