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:
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?
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]
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.
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);