Seguinte galera, to com um probleminha aqui, to vendo estrutura de dados na facul, e tenho que implementar indexação de um arquivo .txt.
Tem que sair da seguinte maneira:
Tenho um arquivo “imenso” em .txt, e este mesmo arquivo é divido em tópicos, então o usuário decide qual tópico visualizar(simbolizado por um int por ex.: 10, que exibiria o tópico 10 do arquivo, somente), isso eu consegui, mas na verdade o professor quer que seja criado um novo arquivo de indexação, o qual vai possuir somente os tópicos, a busca vai ser feita nesse arquivo de indexação, e quando encontrado o tópico, ele vai apontar para o outro arquivo .txt(o arquivo imenso).
Resumindo, preciso guardar a linha dos tópicos, quando selecionado um eu pego o número da linha, abro o outro arquivo, e vou direto para aquela linha, algéum aí pode me ajudar, ja dei uma pesquisada aqui no forum, ja olhei no javadoc mais(por falta de experiencia creio eu), não consegui localizar nada.
O Conceito de arvores e indexação eu sei, mas não sei mesmo como implementar a indexação.
Tipo, como faço pra um arquivo .txt apontar para uma determinada linha de um outro arquivo .txt? Pois procurei no google, aqui no GUJ, no JavaDoc e não consegui encontrar algo semelhante(talvez não procurei da forma “correta”), mas realmente não encontrei nada.
1- Cria uma classe Tópico… com os atributos nomeDoTopico e linha…
2- Itera no arquivo gigante, procurando os topicos… ao encontrar, cire um objeto Topico e preencha com o nome e a linha que o encontrou…
Ou seja, eu vou estar fazendo uma “busca” no arquivo gigante, e não é isso que eu quero, tipo, quero fazer a busca em um arquivo relativamente pequeno, que contenha só os tópicos, encontrado o tópico que estou procurando, eu leio por exemplo a linha que este tópico está no outro arquivo(o arquivo grande), e então abro o arquivo grande, e pulo direto para aquela linha.
Tem como eu estar fazendo isso sem usar um laço, ou seja, ir direto para a linha em questão, e depois usar um laço pra ler realmente as linhas que me interessam ?
Então galera, eu estava dando uma olhada na classe LineNumberReader, e acho que ela pode solucionar meu problema.
Mas aí que entra o porém da história !
Não tô conseguindo fazer ela funcionar como devia(ou pelo menos como eu acho que deveria), fiz o seguinte:
FileReader ler = new FileReader("arquivo.txt");
LineNumberReader line = new LineNumberReader(ler);
line.setLineNumber(10); // Seta a linha 10 para leitura.
System.out.println(line.getLineNumber()); // Aqui imprime o nro 10.
linha = line.readLine();
System.out.println(linha); // Aqui ele imprime a primeira linha do arquivo.
Mas ao invés ele imprimir a linha 10 do arquivo, ele está imprimindo a primeira linha do arquivo.
Alguém sabe se estou fazendo algo erro ou o que posso fazer pra sanar esse problema ?