Oi a todos, estou com um problema e gostaria de importar algumas informações de dentro de um arquivo txt onde preciso pegar o que está após REF=blablabla, encontrei a forma abaixo mas ela pega o que está entre o trecho citado.
public static void main(String[] args) throws FileNotFoundException, IOException
{
BufferedReader arquivo;
arquivo = new BufferedReader(new FileReader("G:\\teste.txt"));
while(arquivo.ready())
{
String linha = arquivo.readLine();
String msg;
msg = linha.substring(linha.indexOf("REF=") + "REF=".length(), linha.indexOf("ref="));
JOptionPane.showMessageDialog(null, "" + msg, "", JOptionPane.INFORMATION_MESSAGE);
}
}
ele encontra o trecho que quero mas somente se este estiver entre duas referencias, tipo REF= blablabla SIS=. preciso pegar o que esta depois de REF= e esse mesmo trecho se repete em outras partes do txt?
Algo desse tipo?
public static List<String> ref(String arquivo) throws Exception {
List<String> lista = new ArrayList<>();
BufferedReader bR = new BufferedReader(new FileReader(arquivo));
String linha;
while ((linha = bR.readLine()) != null) {
if (linha.indexOf("REF=") != -1 && linha.contains("SYS=")) {
String ref = linha.substring(linha.indexOf("REF=") + 4, linha.indexOf("SYS="));
lista.add(ref);
}else if (linha.indexOf("REF=") != -1){
String ref = linha.substring(linha.indexOf("REF=") + 4);
lista.add(ref);
}
}
bR.close();
return lista;
}
Oi Julio, obrigado por responder. ele vai achar “REF=” da linha que tenha “SYS” é isso?
Eu gostaria que ele procurasse a linha que tenha REF= e retornasse o restante da linha após REF=, porem com aquele meu ali ele só pega o que esta entre as duas referências mas eu quero só quero a palavra que esta depois do ref, porem ela vai variar de tamanho.
Não vi nenhum “SYS=” nesse código, então acho que seu programa não se importa com “SYS=”.
E se você fizer:
msg = linha.substring(linha.indexOf("REF=") + "REF=".length(), linha.length());
Isto deverá pegar todo o restante da Linha do arquivo após o “REF=”.
valeu pela dica vou tentar.
Douglas está certo, ele pega todo o restante mas eu pega todas as linha e eu queria que ele pegasse somente onde tem REF=, ele procurar no txt todo e pular as linhas vazias.
Fácil, coloca uma condição if:
public static void main(String[] args) throws FileNotFoundException, IOException
{
BufferedReader arquivo = new BufferedReader(new FileReader("G:\\teste.txt"));
while(arquivo.ready())
{
String linha = arquivo.readLine();
String msg;
if (linha.contains("REF="))
{
msg = linha.substring(linha.indexOf("REF=") + "REF=".length(), linha.length());
JOptionPane.showMessageDialog(null, "" + msg, "", JOptionPane.INFORMATION_MESSAGE);
}
}
arquivo.close();
}
Ele vai ou copiar a linha toda do ref= em frente ou copiar do ref= em frente até onde o sys= começa.
Ainda n pude testar mas de já muito obrigado.
Muito Obrigado a todos que me ajudaram, consegui entender bem como fazer, agora tenho só uma duvida. Da pra ele ler e pegar apenas um do que está repetido tipo.
no txt está:
joão
maria
joão
marcos
alice
maria
alex
felix
e ele retornar só me retornar um dos casos repetidos.
De já obrigado.
Dentro do while quando ele encontrar um linha, vc armazena o valor em uma lista e vai comparando se a lista contem o texto, se sim você pula esse valor repetido.
1 curtida
Obrigado pela luz Julio, vou testar aqui.