Como eu faço para ler somente determinada posição de meu arquivo txt?

Como eu faço para ler e pegar somente esses valores depois do -> , para que eu posso soma-los para obter um resultado final?
Fiz da seguinte forma , mas não consegui.
Já pesquisei em diversos foruns mas não sanei minha duvida

.

Meu codigo em java .
BufferedReader leitor = new BufferedReader (new FileReader(“CARTEIRA\Chart of accounts\PlanConCxToReceive.txt”));
String texto = leitor.readLine();
String[] palavras = texto.split(" -> ;");

                while (texto !=null) {
                texto = leitor.readLine();
                  System.out.println(palavras);     
                 }

Meu arquivo txt está com a seguinte estrutura .

Bills to receive
refael -> 50.0;

Bills to receive
rafael -> 5.0;

Quando você usa split, tem que indicar a string que será usada para dividir.

Como você usou " -> ;", ele tentará buscar exatamente este trecho (espaço, hífen, >, espaços e ponto-e-vírgula). Mas esta sequência não existe no seu arquivo, pois depois de -> tem um número, então o split não vai fazer a quebra da maneira que você precisa.

Uma maneira de resolver é fazer a quebra somente por ->, depois no número você elimina o ; manualmente. E por fim, você converte a string para número e soma ao total:

double total = 0;
try (BufferedReader leitor = new BufferedReader(new FileReader("CARTEIRA\\Chart of accounts\\PlanConCxToReceive.txt"))) {
    String texto;
    while ((texto = leitor.readLine()) != null) {
        String valor = texto.split(" -> ")[1];
        total += Double.parseDouble(valor.substring(0, valor.length() - 1));
    }
}
System.out.println(total);

No caso, valor.substring(0, valor.length() - 1) elimina o último caractere (que é o ;), e Double.parseDouble converte a string para número. Escolhi esta classe porque no arquivo os números possuem uma casa decimal, e parseDouble consegue lidar com isso (Integer.parseInt daria erro, por exemplo).

Também coloquei o BufferedReader em um bloco try-with-resources (disponível a partir do Java 7), que garante que o arquivo será fechado ao final.

E o programa não faz validações: ele assume que sempre terá o -> e a segunda posição sempre tem um número. Mas se quiser validar, pode fazer algo assim:

double total = 0;
try (BufferedReader leitor = new BufferedReader(new FileReader("CARTEIRA\\Chart of accounts\\PlanConCxToReceive.txt"))) {
    String texto;
    while ((texto = leitor.readLine()) != null) {
        String[] partes = texto.split(" -> ");
        if (partes.length > 1) {
            String valor = partes[1];
            try {
                total += Double.parseDouble(valor.substring(0, valor.length() - 1));
            } catch (NumberFormatException e) {
                // não é número - mostrar alguma mensagem de erro, ignorar, etc
            }
        } else {
            // linha não tem "->" - mostrar alguma mensagem de erro, ignorar, etc
        }
    }
}

Mano valeu mesmo pela atenção, mas ta dando erro de ArrayIndexOutOfBoundsException
nessa linha String valor = texto.split(" -> ")[1];

É o que eu falei: “E o programa não faz validações: ele assume que sempre terá o -> e a segunda posição sempre tem um número. Mas se quiser validar, pode fazer algo assim:”

E aí tem outro trecho de código que faz essa validação e evita esse erro…