Leitura de ficheiro txt

Olá amigos!
Preciso de ajuda pois não estou a compreender o resultado do meu código.
O código é:

try{
			// Creates new object File using the pathname
			//File fPath = new File("c:\\MSG_38215.DAT");
			File fPath = new File("c:\\teste.txt");

			// Checks if file can be read
			if(!fPath.canRead()){
				System.out.println("File " + fPath.getName() + " cannot be read!!");
			}

			// Number of bytes of the file
			System.out.println("The file " + fPath.getName() + " is " + fPath.length() + " bytes length");

			// Class for reading character file
			FileReader fr = new FileReader(fPath);

			BufferedReader br = new BufferedReader(fr);
			br.read();
			System.out.println(br.read());  
			System.out.println(new Integer(br.read()));
			System.out.println(br.readLine());
			
		}catch(NullPointerException ex){
			ex.printStackTrace();
		}catch(FileNotFoundException ex){
			ex.printStackTrace();
		}catch(IOException ex){
			ex.printStackTrace();
		}

e o resultado é:

The file teste.txt is 13 bytes length
99
108
audia Rego


O ficheiro teste.txt:
Aclaudia Rego

Eu esperava que imprimisse no stdout o 1º caractere!!
Obrigada
Claudia

Olá Claudia,

Não tenho o eclipse rodando então desculpe qualquer erro de sintaxe, mas tente isso:

    System.out.println((char) br.read());

[]s,
Sami

O resultado estao correto, pois primeiro voce chama br.read() - que le a letra “A” - e nao mostra na tela. Em seguida voce executa novamente o br.read(), que lhe retorna o codigo ASCII da letra ‘c’. O mesmo ocorre para a chamada a new Integer(br.read()).

Por ultimo, br.readLine() le o resto do conteudo.

Se voce quer imprimir apenas o primeiro cacartere (“A”), entao faca apenas

System.out.println((char)br.read());

Porem, lembre-se que a chama a read() avanca o ponteiro de leitura sempre.

Rafael

Pois É!!!
Obrigada.
PS-pensei que ng me ia responder pois estavam todos no sambodramo :lol:

Ainda mais uma questão.
O ficheiro teste.txt tem a palavra EU
O código

char[] cbuf = new char[2];	// Less then 2 throw in java.lang.IndexOutOfBoundsException!
			if(br.read(cbuf, 1, 1) != -1){
				String out = new String(cbuf);
				System.out.println("out = " + out + ".");
				System.out.println("out.length() = " + out.length());
				System.out.println((int)out.charAt(0));
				System.out.println(out.substring(1,1).equals("NULL"));
			}else
				System.out.println("EOF!!");

produz a saída:

The file teste.txt is 2 bytes length
out =  E.
out.length() = 2
0
false

Eu não percebo o que é imprimido antes do E na 2ªlinha!!!
Obrigada
Claudia

Bem a solução (com a ajuda do Sami):

O segundo parametro do metodo read é um indice, mas esse indice comeca do zero mesmo… se você colocar 1 ai, ele deixa o primeiro indice vazio e coloca seu “E” no segundo indice!!

Cláudia