Importar arquivo txt conforme informações específicas

Boa noite,

Preciso de uma ajuda/ideia.

Possuo um arquivo TXT, onde cada linha representa representa um item (Aluno, Professor ou Coordenador), e cada item é separada por " | " que são as informações (nome, sobrenome, idade e cidade) desses itens, como exemplo:

|Aluno|nome|sobrenome|idade|cidade|
|Aluno|nome|sobrenome|idade|cidade|
|Professor|nome|sobrenome|idade|cidade|
|Coordenador|nome|sobrenome|idade|cidade|
|Coordenador|nome|sobrenome|idade|cidade|

Estou importado o arquivo da seguinte forma:

JFileChooser SelecionarArquivoDialog = new JFileChooser();
SelecionarArquivoDialog.setMultiSelectionEnabled(true);
SelecionarArquivoDialog.showOpenDialog(this);
File file = SelecionarArquivoDialog.getSelectedFile();

String linha = new String();
String nomedoarquivo = file.getPath();
File arq = new File(nomedoarquivo);

if (arq.exists()) {
	try {
		FileReader leitorDeArquivo = new FileReader(nomedoarquivo);
		BufferedReader bufferDeArquivo = new BufferedReader(leitorDeArquivo);

		while (true) {
			linha = bufferDeArquivo.readLine();
			
			if (linha == null) {
				break;
			}
			
			System.out.println(linha);
		}
	} catch (FileNotFoundException ex) {
		Logger.getLogger(Importacao.class.getName()).log(Level.SEVERE, null, ex);
	} catch (IOException ex) {
		Logger.getLogger(Importacao.class.getName()).log(Level.SEVERE, null, ex);
	}
}

Dessa forma, está me retornando todas as linhas do arquivo, porém, preciso que me retorne apenas as linhas com a informação “|Professor|” para que depois pegue as outras informações desse “professor”.
Como posso fazer isso?

vc pode fazer assim

String tipo = linha.split("|")[0];
//seu texto vai ser separado em grupos
//|[0]Professor|[1]nome|[2]sobrenome|[3]idade|[4]cidade|
//e aí vc vai escolhar o grupo equivalente ao que vc quer,
// no seu caso é o [0]

depois vc pode fazer:

if(tipo.equals("Professor")){
   System.out.println("Professor detectado");
}
1 curtida

Noite,

Tentei aplicar sua sugestão ao código de várias formas, mas não consegui. Tentei então fazer um teste simples utilizando um campo de texto, porém, sempre sempre me retorna o " | " e não as informações do professor.

Posta o código que você escreveu

Eu já apaguei aquele código, de tanto de mexi nele. Percebi que o problema está no " | ", fiz o seguinte.

String linha = “;Aluno;nome;sobrenome;idade;cidade;”;
String tipo = linha.split(";")[1];
System.out.println(tipo);

Neste caso tenho como retorno a descrição “Aluno” porque a posição que utilizei foi a 1, quando utilizo a 3 tenho como retorno “Sobrenome”. Até aí tudo certo, o problema está quando altero o “;” por “|” aí ele fica me retornado apenas um caractere. Por exemplo:

String linha = “|Aluno|nome|sobrenome|idade|cidade|”;
String tipo = linha.split("|")[1];
System.out.println(tipo);

No caso acima, tenho como retorno a letra “A”. Sabe porque isso acontece?

Opa, dando uma olhadinha na documentação vi que o método split usa Expressões regulares. No caso não sei dizer o porquê o símbolo | faz isso, já que em regex ele só que dizer “ou”. Se usar assim ele funciona normal:

    String linha = “Aluno|nome|sobrenome|idade|cidade|”;
    String tipo = linha.split("\\|")[1];
    System.out.println(tipo);
2 curtidas

Realmente, dessa forma funcionou. Muito Obrigado, ajudou muito.