Olá. Estou com uma dúvida em ler um arquivo texto. Como no exercicio em anexo, preciso ler uma linha do meu arquivo(a primeira por exemplo) que será um número. Esse número indica o quantidade de objetos de um determinado tipo que devo criar. Nas linhas seguintes(de acordo com o numero lido), estão as informações de cada objeto. Minha dúvida é: existe alguma forma de ler uma quantidade x(o numero lido) de linhas seguintes ao qual estou e ir criando os objetos?
Sim, você fará um for que irá iterar “x” vezes.
Dentro de cada for le uma linha nova e cria um objeto correspondente a linha.
Veja se isso te ajuda:
Um modo simples, mais didádico, você poderia ler todas as linhas em um vetor (ou ArrayList). Aí leria o primeiro, e com o numero lido, leria os x próximos. Aí leria o x+1 pra ver quantos elementos pra 2ª vez e por aí vai.
FileReader fr = new FileReader(new File("seu arquivo.txt"));
BufferedReader br = new BufferedReader(fr);
ArrayList<String> todasAsLinhas = new ArrayList();
String linha = "";
while((linha = br.readLine) != null){
todasAsLinhas.add(linha);
}
Seu arraylist estaria assim no final:
“3” | “blabla” | “bleble” | “blibli” | “4” | “1objeto” | “2bjeto” | “3objeto” | “4objeto” | 4 | …
Vc pode tentar com stream(fluxos). Essa classe tem alguns metodos que ajuda bastante pq ela le byte por byte
[quote=miyas]Um modo simples, mais didádico, você poderia ler todas as linhas em um vetor (ou ArrayList). Aí leria o primeiro, e com o numero lido, leria os x próximos. Aí leria o x+1 pra ver quantos elementos pra 2ª vez e por aí vai.
FileReader fr = new FileReader(new File("seu arquivo.txt"));
BufferedReader br = new BufferedReader(fr);
ArrayList<String> todasAsLinhas = new ArrayList();
String linha = "";
while((linha = br.readLine) != null){
todasAsLinhas.add(linha);
}
Seu arraylist estaria assim no final:
“3” | “blabla” | “bleble” | “blibli” | “4” | “1objeto” | “2bjeto” | “3objeto” | “4objeto” | 4 | …[/quote]
Só tem que tomar cuidado com essa solução, pois se o arquivo for muito grande pode gerar vários problemas, porém não deixa de ser uma solução.