[Resolvido]Ler arquivo de acesso sequencial

5 respostas
Bird89du

Boa tarde galera,

preciso ler um arquivo de acesso sequencial em txt,
fiz uma classe de acordo com o livro do Deitel que lê esses arquivos e seta em variáveis seguindo o trecho do código:

...
try{
			while(arquivo.hasNext()){
				cadastroLocalidade.setCodigoCNL(arquivo.next());
...

Mas existem alguns campos no arquivo txt que tem mais de uma palavra, então ele não seta o atributo no campo correto,
Eu pensei em formatar o arquivo com “;” entre os campos mas não sei como ler assim no meu programa java.

me ajuda ai galera.

valeu

5 Respostas

B

Eu costumo ler o arquivo linha por linha (em vez de usar Scanner.next, use BufferedReader.readLine) e então use String.split para separar em campos.

Conselho: é perfeitamente possível usar Scanner.next. O único problema é que você pode ter problemas com arquivos “mal-formatados” (ou seja, se algum campo falta, você pode acabar tendo problemas nas linhas subsequentes). Em vez disso, faça como lhe indiquei.

M

Ou o método da nextLine() da classe Scanner mesmo.

Mas o que você está lendo do .txt? Um arquivo de propriedades?

Bird89du

Eu estou lendo um arquivo gerado por um sistema externo que preciso inserir no banco depois,
esse arquivo está gravado com dados em sequência e separado por “;” ou espaço.

A idéia é ler o txt e jogar os dados em variáveis, a classe que fiz está pegando os dados em sequencia quanto tem espaço entre as palavras:
ex.

augusto silva 16 brasil masculino flavio santos 59 chile masculino maria dorta 21 espanha feminino

até ai tudo bem, mas imaginando que eu posso ter algum campo com uma ou mais palavras ai fica inviável para inserir nas variáveis:
ex.

augusto silva 16 brasil masculino sao paulo flavio santos 59 chile masculino san tiago maria dorta 21 espanha feminino san martin

Note que se eu tentar jogar o último campo em um banco de dados eu só vou recuperar a penultima palavra pois a última é considerada outra palavra(campo no java), eu pensei em colocar “;”(com o UltraEdit ou outro editor de texto) para delimitar os campos ai ficaria assim:
ex.

augusto;silva;16;brasil;masculino;sao paulo flavio;santos;59;chile;masculino;san tiago maria;dorta;21;espanha;feminino;san martin

mas eu não sei ler arquivo assim.

alguém pode ajudar?

ViniGodoy
Scanner in = new Scanner(new File("seuArquivo.txt"));

while (in.hasNextLines()) {
  String linha = in.nextLine();
  String campos[] = linha.split(";");
  fazQualquerCoisaCom(campos);
}

in.close();
Bird89du

É isso ai,

deu certo ViniGodoy,

obrigado a todos pela ajuda

Criado 9 de dezembro de 2009
Ultima resposta 9 de dez. de 2009
Respostas 5
Participantes 4