Ultimo caracter num ficheiro em java

10 respostas
S

qual o ultimo caracter lido quando se ta a ler um ficheiro txt em java

10 Respostas

hashcode

Use isso

FileInputStream in = new FileInputStream("/tmp/teste.txt");
        
        byte buff[] = new byte[200];
        int lidos =0;
        
        while ( (lidos=in.read(buff)) != -1 );
            
        char c = (char) (buff[lidos-1]);
        System.out.printf("o último é %c", c );

ou

RandomAccessFile ra = new RandomAccessFile("/tmp/teste.txt","r");
        byte token[] = new byte[1];
        ra.read(token, ((int)ra.length()-1),1 );
        System.out.printf("o último é %c", token[0] );

Shairon Toledo


http://formj.sourceforge.net

akumaldo

não existe uma maneira mais…simples de fazer isso? não existe nenhum metodo que já retorna o ultimo char do arquivo? :shock:

hashcode

Não sei

S

nao sei bem, mas ja nao é preciso… o problema que me estava a dar era que ao ler todas as palavras dum ficheiro, conseguia ler todas as palavras bem mas na ultima adicionava um ? no final da palavra…

akumaldo

Sim…é só criar um metodo e pronto…está implementado!:slight_smile:

Calvin

Iae

Cara não tenho certeza mas acredito que seja o “\0”. Faz o teste e depois avisa se deu certo ou não!

Esse “/0” vem da leitura de arquivos em C, acreditoq ue em java seja igual!

Vlw

hashcode
\0 ==  EOF

O que o cara queria é último caracter do arquivo, ou seja. EOF -1

michellenery

O ultimo caracter do arquivo eh -1???
Isso significar EOF = -1

Vou testar!

michellenery

é /0 ou -1?

hashcode
/0 não é . Estou dizendo que EOF é -1 porque a maioria dos métodos read() retorna a quantidade de bytes lidos. Quando um read lê nada ele retorna 0 , e quando um read lê nada porque está no final do arquivo é -1. Em c temos
#ifndef EOF
# define EOF (-1)
#endif
usa-se \0 (ou -1) em algumas funções em C para representar o null (NULL em C) . Ah, para leitura de arquivo use -1 e o último caracter é a equação o EOF-1.
Criado 12 de julho de 2006
Ultima resposta 17 de jul. de 2006
Respostas 10
Participantes 5