Ler caractere de um arquivo HELP

Boa noite galera

Preciso de um help

tipo:
tenho um arquivo codigo.txt , quero abrir esse arquivo e dentro desse arquivo tem o seguinte conteudo:

0:9(18) <-- H’14
0:9(19) <-- H’80
0:9(20) <-- H’01

tava vendo q da pra ler linha por linha e pega somento o 2 ultimos caracteres, justamente o codigos q quero, pegando esse 2 ultimos codigos de cada linha queria monta um string numa linha so exemplo: 148001
e ja conseguin abri o arquivo usando esse codigo :

  1. JFileChooser fc = new JFileChooser();
  2.       int opcao = fc.showOpenDialog(null);  
    
  3.       if (opcao == JFileChooser.APPROVE_OPTION)   
    
  4.       {  
    
  5.         System.out.println("Arquivo selecionado: " +  
    
  6.           fc.getSelectedFile().getName());  
    
  7.       }  
    
  8. }     
    

so que nao to conseguindo manipula esse arquivo, no caso aki ta abrindo o arquivo e mostrando o nome, queria em vez de mostra o nome, manipula o arquivo pegando os 2 ultimos caracteres e montando um string depois numa linha unica : 148001

vlw

Se você GARANTIR que os dois ultimos são os chars que voce quer, pode fazer assim:

                File file = new File("seuArquivoAqui");
		BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
		String line = bf.readLine();
		String code = "";
		while(line != null){
			code += line.substring(line.length()-2);
			line = bf.readLine();
                }

A String code vai conter o 148001 do seu exemplo, se o arquivo for aquele mesmo…
Se você não garantir a posição dos caracteres, mas garantir a estrutura da linha do arquivo, você pode usar expressões regulares com replaceAll para tirar o que você não quer

Tome cuidado com esse tipo de concatenação de String, isso pode fazer sua aplicação abrir o bico depedendo do tamanho do arquivo:

code+=

Prefira:

StringBuilder code = new StringBuilder();
while(){
    code.append("xxxx");
}
code.toString();

Deu pau no while ilegal start of type

Deu esse erro:
Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.lang.String.substring(Unknown Source)
at java.lang.String.substring(Unknown Source)
at Teste.main(Teste.java:25)

olha o codigo como fico:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class Teste {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
	// TODO Auto-generated method stub
	
	  String code = null;
      File file = new File("codigo.txt");
      BufferedReader bf = new BufferedReader
              (new InputStreamReader(new FileInputStream(file)));
      String line= bf.readLine();
      while( line != null )
      {
    	  code += line.substring(line.length()-2);
    	  line = bf.readLine();
      }
      System.out.println(code);

}
}

Duas coisas:

  1. Começa a usar a tag de código quando for postar…

  2. Eu falei que o código só pode ser usado se você GARANTIR que os dois ultimos caracteres são os que voce precisa, esse erro acontece por que voce tem alguma linha em branco no seu arquivo, ou seja, ele tenta acessar a posição -2 da string, que não existe. Ou remova essa linha, ou apenas concatene na String code se a linha passar num teste…

o arquivo esta certinho sem linhas em branco e realmente so quero pega os 2 ultimos caracteres

ta um pedaco do arquivo:

0:9(16) <-- H’02
0:9(17) <-- H’30
0:9(18) <-- H’14
0:9(19) <-- H’80
0:9(20) <-- H’01
0:9(21) <-- H’07
0:9(22) <-- H’A2

Agora rodo mas nao mostra o conteudo da string code , onde estava armazenando os 2 ultimos caracteres.
eu dei System.out.println(code) e nao resulta em nd… da setei a variavel code = null aparece igual a null e poe code = “” ela sai vazia

Coloque seu while desse forma:

BufferedReader reader = new BufferedReader(new FileReader(arquivo));
BufferedReader leitor = new BufferedReader(reader);
String valor = null;
while((valor = leitor.readLine())!=null){

}