estou fazendo um experimento com um arquivo que contenha mais de 150000 linhas.
Pois estou querendo ler uma linha aleatóriamente, eu tentei com o RandomAcessFile.seek(), mas eu percebi que o posicionamento do ponteiro era dentro da linha.
Eu to kerendo, de forma aleatória escolher uma linha e ler a linha inteira … lembrando que o tamanho da linha é variável.
Poderia gerar um número aleatório de 0 até o número de linhas do arquivo com o Random, e percorrer o arquivo até essa linha escolhida com o LineNumberReader.
ricardo13
olá,
Obrigado pela resposta.
Mas o arquivo tem muitos registros (linhas) … percorrer todo o arquivo até chegar na linha selecionanda vai despender muito tempo, não vai ???
Bom…vou dar uma olhada nessa classe (LineNumberReader) …nunca tinha ouvido falar nela.
Por acaso, se você puder passar o código de como faz esse tipo de coisa, também pq nunca usei essa classe.
Eu agradeceria
Mais uma vez obrigado
Ricardo
ricardo13
vou mandar o exemplo q eu fiz com LineNumberReader, mas ele ta lendo somente a 1º linha.
Eu encontrei alguma coisa assim na net … falando que o método setLineNumber poderia fazer isso … ,mas pelo jeito não ta selecionando a linha.
Obrigado
Ricardo
B
Bruno_Laturner
Não, não vai, a menos que você percorra o arquivo muitas vezes. Neste caso, gere todos os números aleatórios que você for precisar, e percorra o arquivo uma vez, coletando tudo.
Tente o seguinte:
LineNumberReaderreader=newLineNumberReader(newFileReader("nome Do arquivo")));finalintQTDE_ALEATORIOS=10;inti=0;SortedSet<Integer>numeros=gerarNumerosAleatorios(QTDE_ALEATORIOS);List<String>linhas=newArrayList<String>(numeros.size());Stringlinha=null;while((linha=reader.readLine())!=null||i<QTDE_ALEATORIOS){if(numeros.contains(reader.getLineNumber())){linhas.add(linha);i++;}}returnlinhas;