Ler dados de um arquivo txt e transferí-los para variáveis int e * char
4 respostas
R
rhiegen
Pessoal,
Tenho um arquivo texto onde tenho informações do tipo:
Jose
1
10
1
Maria
2
20
1
preciso ler cada linha, transferir os dados string para um *char e os dados int para variáveis int. Consegui ler todos os dados e eles estão da form jose\n1\n10\n1\nMaria\n2\n20\n1\0. Estou tendo dificuldades de pegar o valor por exemplo 10 que no *char seriam 1 um elemento do *char e 0 outro elemento. Como são dois elementos e deverão ser atribuídos a uma var do tipo int, como poderia fazer para conseguir tal coisa? Existe alguma outra estratégia? Não posso usar arquivo binário para resolver o problema.
Eu costumo pegar linha por linha em String e depois converter pra inteiro.
por exemplo:
File f = new File(caminhoarquivo);
FileReader flr = new FileReader(f);
BufferedReader br = new BufferedReader(flr);
daí vc usar o br para ler as linhas.
como por exemplo
String linha1 = br.readLine();//cada readLine() que vc faz ele lê a linha e vai para a próxima
String linha2 = br.readLine();
depois é só converter essa String em inteiro.
R
rhiegen
RichardVaugh:
Eu costumo pegar linha por linha em String e depois converter pra inteiro.
por exemplo:
File f = new File(caminhoarquivo);
FileReader flr = new FileReader(f);
BufferedReader br = new BufferedReader(flr);
daí vc usar o br para ler as linhas.
como por exemplo
String linha1 = br.readLine();//cada readLine() que vc faz ele lê a linha e vai para a próxima
String linha2 = br.readLine();
depois é só converter essa String em inteiro.
Mas o problema é que estou fazendo isso em Linguagem C e não Java
V
Vini_Fernandes
Cara, creio utilizar o java.util.Scanner seja a melhor forma de voce realizar essa varredura pelo arquivo. Fiz um codigo, que nao seio do jeito que gostaria, mas vale como exemplo:
importjava.io.*;importjava.util.*;publicclassLerTexto{publicstaticvoidmain(String[]asdf){List<Integer>inteiros=newArrayList<Integer>();List<String>strings=newArrayList<String>();//variavel para armazenar os valores da iteracaoStringproximo=null;try{Filearquivo=newFile("meuarquivo.txt");InputStreaminput=newFileInputStream(arquivo);Scanners=newScanner(arquivo);//definindo o padrao para tokenizar, no caso eh um caracter de nova linhas.useDelimiter("\\n");while(s.hasNext()){proximo=s.next();try{//transformando para um interio, caso contrario assumiremos que eh uma string inteiros.add(Integer.parseInt(proximo));}catch(NumberFormatExceptionnf){strings.add(proximo);}}//liberando o arquivo s.close();//testando o conjunto dos interiosfor(inti:inteiros)System.out.println("imprimindo os inteiros: "+i);for(Stringz:strings)System.out.println("imprimindo as strings: "+z);}catch(IOExceptione){e.printStackTrace();}}}
Ate mais.
T
thingol
rhiegen:
Pessoal,
Tenho um arquivo texto onde tenho informações do tipo:
Jose
1
10
1
Maria
2
20
1
preciso ler cada linha, transferir os dados string para um *char e os dados int para variáveis int. Consegui ler todos os dados e eles estão da form jose\n1\n10\n1\nMaria\n2\n20\n1\0. Estou tendo dificuldades de pegar o valor por exemplo 10 que no *char seriam 1 um elemento do *char e 0 outro elemento. Como são dois elementos e deverão ser atribuídos a uma var do tipo int, como poderia fazer para conseguir tal coisa? Existe alguma outra estratégia? Não posso usar arquivo binário para resolver o problema.
Grato,
Rhiegen
Você está perguntando para fazer isso em C ou C++?
Se for C++ é mais simples e menos arriscado. Faça algo parecido com o seguinte: