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:)

Foi útil?

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();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top