geração de TXT em um formato

7 respostas
J

oi pessoal,

preciso gerar um txt de acordo com um layout pré-definido. Queria saber qual a melhor opção pra gerar esse arquivo a partir de um pojo.

Tenho uma entidade LancamentoBancario que possui outras entidades e vários atributos.

public class LancamentoBancario{
//outros atributos

private Date data;
private Double valor;

private Cliente cliente;

private Banco banco;

//getter  e setter
}

E o meu layout:

Posição 01-02 movimentação bancaria
Posição 03 - 32 identificação do arquivo
Posição 33 - 72 Nome originador

etc

A dúvida é como fazer a concatenação sem afetar minha performance de memoria e processamento.

StringBuilder com substring?
StringBuilder com insert?

ou algum outro jeito?

lembrando que é preciso respeitar o espaço do campo independente do conteudo. Se o texto tiver 5 posições e o campo for 7 posiçoes....o proximo tem que vir na 8ª posição.

valeu galera :)

7 Respostas

matheusgeres

Olá, amigo.
Use StringBuffer, você ganhará performance para fazer a concatenação e depois passa para String e joga para onde precisar, se precisar. :smiley:
Dá uma olhada na documentação do Java na Oracle, tem um link em anexo.
StringBuffer.

ViniGodoy

matheusgeres:
Olá, amigo.
Use StringBuffer, você ganhará performance para fazer a concatenação e depois passa para String e joga para onde precisar, se precisar. :smiley:
Dá uma olhada na documentação do Java na Oracle, tem um link em anexo.
StringBuffer.

Ou, siga a recomendação do Javadoc que o colega postou e use o StringBuilder mesmo, como você havia pensado, que é igual ao StringBuffer, mas sem sincronização desnecessária.

Eu usaria o método append.

J

mas Vini
como eu faria pra adicionar em uma posição especifica?

eu tentei assim e nao deu:

StringBuilder linha = new StringBuilder();
linha.append("50");
linha.insert(10, "123456"); //adicionar na linha 10 esse texto 123456

deveria ficar

50          123456
ViniGodoy

Você pode usar também o String.format.

J

vc tem algum exemplo?

J

vini eu tava estudando sobre String.format mas ele nao faz o que eu preciso. ou pelo menos não consegui visualizar a solução nele. preciso criar uma string com 86 posições e especificar em cada posição um valor…

J

resolvi desse jeito:

StringBuilder linha = new StringBuilder();
linha .append("50");//na posicao 0-1
 linha .append(String.format("%-30s", IDENTIFICACAO));//na posição 2 - 30

:smiley:

valeu galera

Criado 8 de fevereiro de 2013
Ultima resposta 9 de fev. de 2013
Respostas 7
Participantes 3