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