Estava eu fazendo uma rotina para ler um arquivo de texto que no sistema…esse tipo de arquivo tem aproximadamente umas 53.000 linhas…
depois de lido e armazenado o conteúdo do arquivo numa string, tenho que ver linha por linha para modificar alguns valores contidos nesta string…
após isso…devo inserir essa nova string modificada em um novo arquivo…
Só que percebi uma diferença de tempo de processamento exorbitante…mas exorbitante meeeessssmmooo entre usar
Strings e usar StringBuffer… não é diferença de segundos… mas sim de meia hora… pra mais…
por exemplo…
//CÓDIGO LENTO
String strOriginal = leArquivo("nomedoarquivo.txt")
StringTokenizer tk = new StringTokenizer(texto,"\n");
String strNovoArquivo = "";
while(tk.hasMoreTokens()){
String token = tk.nextToken();
//faz o processamento dos valores com a string token..
.
.
.
strNovoArquivo += token + "\n";
}
gravaArquivo(strNovoArquivo,"nomeNovoArquivo.txt);
//CÓDIGO + RÁPIDO
String strOriginal = leArquivo("nomedoarquivo.txt")
StringTokenizer tk = new StringTokenizer(texto,"\n");
StringBuffer strNovoArquivo = new StringBuffer();
while(tk.hasMoreTokens()){
String token = tk.nextToken();
//faz o processamento dos valores com a string token..
.
.
.
strNovoArquivo.append( token + "\n");
}
gravaArquivo(strNovoArquivo.toString(),"nomeNovoArquivo.txt);
Agora a pergunta…porque??? porque a enorme diferença de tempo de execução e memória…entre uma string e um StringBuffer… nos meus códigos…vo usar onde puder só stringbuffer…em vez de strings…
mas eu mesmo prefiro essa forma de implementar.