Scanner pular de linha

3 respostas
F

Tenho o seguinte código:

public class Teste {

	public static void main(String[] args) {
		Teste teste = new Teste();
		teste.readFilePart(1);
	}

	private void readFilePart(int number){
		try {
			Scanner scanner = new Scanner(new FileReader("C:/dados_usuario_teste.txt"));
			System.out.println("leu");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}

Entretanto gostaria que ao invés de utilizar o nextLine(), fosse direto para uma determinada linha. Por exemplo, começar a ler o arquivo a partir da linha 1000 até a 1500.
Como poderia fazer isso?

3 Respostas

E

Pois é, arquivos-texto têm esse problema - para você ir até a linha 1000, a menos que você tenha preparado antes um arquivo de índice, você precisa passar por todas as linhas anteriores (da 1 até a 999), descartando o que foi lido :frowning:

(Infelizmente as classes *Reader não têm disponível um método como o “seek” do RandomAccessFile, o que torna difícil até usar o tal arquivo de índice que lhe sugeri).

F

entanglement:
Pois é, arquivos-texto têm esse problema - para você ir até a linha 1000, a menos que você tenha preparado antes um arquivo de índice, você precisa passar por todas as linhas anteriores (da 1 até a 999), descartando o que foi lido :frowning:

(Infelizmente as classes *Reader não têm disponível um método como o “seek” do RandomAccessFile, o que torna difícil até usar o tal arquivo de índice que lhe sugeri).


Mas como eu poderia fazer esse tipo de índice sem percorrer todo o arquivo?

E

Só recomendaria ter um índice se você tiver um arquivo-texto enorme e que você vá ler frequentemente.

Por exemplo, digamos que você vá criar um programa que visualize arquivos de log de tamanhos muito grandes (digamos mais que 1 GB). Se você quiser ir para a linha 250.000 desse arquivo, por exemplo, é melhor que você indexe antes (na hora que você for carregar o arquivo na primeira vez), porque você não vai conseguir ler o arquivo totalmente em memória (nem faz sentido).

Criado 15 de maio de 2013
Ultima resposta 15 de mai. de 2013
Respostas 3
Participantes 2