Ler um arquivo TXT e pegar a posição correta de uma determinada string

Olá pessoal, sou novo aqui no forum e tambem novo no Java, gostaria de uma ajuda no que diz respeito a leitura e manipulação de strings de um determinado txt, pois bem vamos aos trabalhos:

Tenho um codigo que está funcionando sem muito stress, este codigo “pega” o TXT de um determinado lugar e simplismente apresenta na tela o seu conteudo, segue o codigo:


import java.io.File;  
    import java.io.FileReader;        
    import java.io.BufferedReader; 


    class LerLinhasArquivo {  
        void Learquivo(){ //metodo que le o arquivo texto
            try {  
                File arquivo = new File("texto.txt");  
                 
                FileReader fileReader = new FileReader(arquivo);  
                BufferedReader buffer = new BufferedReader(fileReader);     
   
                String line = buffer.readLine();             
            
                 while (line != null) {   
                  
                System.out.println(line); 
                line = buffer.readLine(); 
                                                     
                }  
       
            } catch (Exception e) {  
               e.printStackTrace();  
           }  
       }  
                                  
        public static void main(String[] args) {  
            LerLinhasArquivo obj_le_arquivo=new LerLinhasArquivo();
            obj_le_arquivo.Learquivo(); 
        }                        
   }  

Pois bem, este codigo le um arquivo assim:

9
5 9 3 8 4 7 6 1 2

5
1 3 2 5 4

6
2 1 4 3 8 6

A primeira linha indica o numero de strings que estão na linha abaixo.

Se reparar a linha 5 9 3 8 4 7 6 1 2, a string 3 está na EXATA POSIÇÃO na linha, Ou seja, string de valor 3 na posição 3 (Não conta o ZERO)

Como faço para apontar que a string de valor X está EXATAMENTE na posição X da linha ?

Espero estar sendo claro.

Obrigado.

Cara… eu te indico para fazer o seguinte:

Não use o readLine, utilize o read(char[] cbuf, int off, int len), já que na primeira linha você terá o tamanho da segunda linha. Após a leitura você percorre com um loop básico este array e terás o índice e o valor “na mão” para verificar a igualdade, entendeu?

Olá, na verdade não consegui entender, o read(char[] cbuf, int off, int len) vai interpretar o tamanho de linha, estou dando uma pesquisada, se conseguir posto a resposta

Use o indexOf:

package br.com.pedrosa.testes;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

class LerLinhasArquivo {
	private static final String TRES = "3";
	private static final String CINCO = "5";

	public void learquivo() { // metodo que le o arquivo texto
		try {
	        BufferedReader in = new BufferedReader(new FileReader("c:/texto.txt"));
	        String linha;
	        while ((linha = in.readLine()) != null) {
	            linha = linha.trim();
	        	if(linha.length()>3){
	        		System.out.println("Linha inteira " + linha);
	        		System.out.println("A ocorrencia " + TRES + " é da posição " + getPosicao(linha, TRES) );
	        		System.out.println("A ocorrencia " + CINCO + " é da posição " + getPosicao(linha, CINCO) );
	        	}	
	        }
	        in.close();
	    } catch (IOException e) {
	    	e.printStackTrace();
	    }

	}

	public static int getPosicao(String linha, String ocorrencia) {
		return linha.indexOf(ocorrencia)+1;
	}

	public static void main(String[] args) {
		LerLinhasArquivo arquivo = new LerLinhasArquivo();
		arquivo.learquivo();
	}
}