estou tentando utilizar o Java NIO pra manipulação de arquivos e precisava ler uma linha inteira. O que consegui até agora, foi ler somente 1 byte de cada vez com o ByteBuffer. Tentei realizar uma lógica concatenando os caracteres até que encontre o caracter “\n” e assim obter a linha, porém não ficou tão legal e performático.
Há um bom tempo um colega meu resolveu fazer exatamente a mesma coisa que você. Descobrimos, depois de algum tempo, que é mais performático (em termos de ter o programa funcionando logo e dar sempre o resultado correto) você usar um BufferedReader mesmo (e com um buffer grande, isso pode ser ajustado em um dos construtores de BufferedReader que recebe o tamanho do buffer a ser usado), em vez de usar Java NIO, justamente por causa desses tipos de coisas - e olhe que a gente lia buffers enormes com o Java NIO e procurava o \n dentro deles, em vez de ler um byte de cada vez, que é coisa muito,muito tosca.
rso1988
entanglement:
Há um bom tempo um colega meu resolveu fazer exatamente a mesma coisa que você. Descobrimos, depois de algum tempo, que é mais performático (em termos de ter o programa funcionando logo e dar sempre o resultado correto) você usar um BufferedReader mesmo (e com um buffer grande, isso pode ser ajustado em um dos construtores de BufferedReader que recebe o tamanho do buffer a ser usado), em vez de usar Java NIO, justamente por causa desses tipos de coisas - e olhe que a gente lia buffers enormes com o Java NIO e procurava o \n dentro deles, em vez de ler um byte de cada vez, que é coisa muito,muito tosca.
Obrigado pela resposta entanglement,
era exatamente o que eu acabei de provar aqui. Testei o desempenho com o BufferedReader e realmente o desempenho da leitura ficou até melhor do que com a lógica que eu fiz. Achei que utilizando NIO a diferença ia ser absurda, mas não foi a conclusão que cheguei. Vou ficar com o BufferedReader mesmo ! hehehe