Sugestão de algoritmo

2 respostas
ctdaa

Olá a todos.
Tenho uma situação onde recebo um os mais buffers de até 16000 bytes e vou gravando um arquivo tipo texto. Estes dados vem com quebra de linha apenas com “\n”, mas como o usuário vai abrir o arquivo no Windows eu preciso incluir o “\r” para ficar com cr+lf.
Gostaria de sugestões de algoritmos que fossem mais eficientes e não degradassem a performance deste processo.
Para um primeiro teste comecei utilizando o código abaixo, mas ele trata e grava um char por vez:

PrintWriter pw = new PrintWriter(fo, "ISO-8859-1");
                        ByteArrayInputStream ba=new ByteArrayInputStream(b);
                        BufferedReader br= new BufferedReader(new InputStreamReader(ba));
                        while ((i=br.read()) != -1) {
                            if ( last != '\r' && i == '\n' ) pw.append('\r');
                            pw.append((char) i);
                            last=i;
                        }

b ==> byte array de 16k
pw ==> outputstream de gravação

2 Respostas

Rodrigo_Sasaki
String quebraDeLinha = System.getProperty("line.separator");
ctdaa

Obs: eu recebo o array de bytes de outro processo, não posso mexer na geração de buffer. Posso apenas tratar o que recebo.

Criado 29 de maio de 2012
Ultima resposta 29 de mai. de 2012
Respostas 2
Participantes 2