Manipulaçao arquivos texto

Olá, estou fazendo um programa que pega um arquivo texto, neste arquivo ele separa os campos assim
qlqrcoisa-nomedapessoa
simbolo talcoisa ano 1987

no caso eu preciso extrair o nome da pessoa q vem na primeira linha depois de um traço, na segunda linha o simbolo q vem seguido de simbolo e o ano q vem seguido de ano.
Ele pula uma linha a cada registro escrito. Eu queria fazer um programa q listasse todos os nomesdepessoas de ano 1987 por exemplo.
Nao estou pedindo codigo pronto, soh uma ideia de como fazer, vlw

talvez eu mandar tudo pro buffer? o txt eh enorme…

uma ideia seria vc ler todo o arquivo e depois ir seperando com o StringTokenizer.
uma vez precisei fazer algo parecido com isso se quiser coloco uns pedaços do codigo.

vou dar um exemplo mais detalhado

eric_clapton-wonderful_tonight
This is singer / songwritery, soft rock song that is tender and calming. It features piano, acoustic guitar, male vocal, a nice male vocal solo, and emotional, vocal harmonies vocals. It is a song with a slow tempo and with low energy that you might like listen to while going to sleep.

cada musica eh separada por nomedocantor-nomedamusica, depois This is tipodamusica that is estadodeespirito, seguido de outras coisas q nao irei utilizar e pula uma linha em cada registro.
preciso pegar e separar nomedocantor(erick clapton), nomedamusica(wonderfultonight), tipodamusica(singer songwritery) e estadodeespirito(tender and calming).
dai o programa diria para vc escolher o estadodeespirito q listava o nome das musicas que batem com o estado de espirito.

esse metodo de stringtokenizer eu posso usar varios tokens diferentes?

Isso mesmo, bela sugestão do Lemuras…
É dificil encontrar alguem que conheça tal classe…

Vou dar um exemplo de utilização dos métodos da StringTokenizer para você…

String texto = "Olá_companheiro";
		
StringTokenizer st = new StringTokenizer(texto, "_", false);
		
while (st.hasMoreTokens()) {
       System.out.println(st.nextToken());
}

A StringTokenaizer trabalha com base em “pedaços” (como o nome sugere)
Para dividir a String propriamente dita ele leva como base algum Delimitador…

Olhe o construtor de tal…
Ele possui 3 sobrecargas…
No exemplo utilizei o mais complexos a fins didáticos, pois é o mais fácil de entender…

Nele obviamente passo o texto a ser “Analisado”
depois passo um conjunto de caracteres para ser utilizado como delimitador…
e logo apos passo um booleano para dizer se vai ou não ser inserido nos tokes os delimitadores…

Para percorrer uma tokenaizer é bem parecido com a estrutura de um ResultSet…
Se você ja estudou JDBC, entendera rapidinho…

Neste exemplo percorri da seguinte maneira…
Enquanto tinha token…
eu invoco o metodo nextToken que remove o “proximo” token da estrutura e me retorna o mesmo…

com base nisto as iterações podem ser feitas…

amigos, o metodo split da classe java.util.String pode servir? Assim é só ler a linha em uma string e depois utilizar este método.

Só uma observação:

A documentação da classe StringTokenizer diz que sua utilização é desencorajada em códigos novos, ela só é mantida por questões de compatibilidade, é uma classe antiga.

Para quem procura a funcionalidade de StringTokenizer, agora é recomendado usar o método split, ou o pacote java.util.regex

[quote]Só uma observação:

A documentação da classe StringTokenizer diz que sua utilização é desencorajada em códigos novos, ela só é mantida por questões de compatibilidade, é uma classe antiga.

Para quem procura a funcionalidade de StringTokenizer, agora é recomendado usar o método split, ou o pacote java.util.regex
[/quote]

Olha só, desta eu não sabia…

Olha pessoal obrigado pela resposta rapida, acabei conseguindo fazer tudo pelo metodo split, soh peguei o txt joguei numa string e fui lendo por linha e pegando pelo split, acabei deixando o trabalho da facul pra ultima hora, mas consegui implementar pelo menos. E pesquisando descobri isso tbm, q muita gente ja nao usa o stringtokenizer