1
resposta

Dúvida - Método InputFileStream()

Fiz o seguinte código para ler um arquivo e escrever na tela seus caracteres.

        char c = 0;

        FileInputStream file = new FileInputStream("C:\\Users\\alan.miranda\\Desktop\\personas.txt");
        while(file.read() != -1){
            c = (char) file.read();
        }

        System.out.println(c);

        file.close();

Fiz esse código simples, justamente para poder debugar e entender seu comportamento, porém chegou no método file.read(), ele chama read0() da classe InputFileStream()

    public int read() throws IOException {
        return read0();
    }

    private native int read0() throws IOException;

Porém, não consegui entender onde está a implementação desse método que lê os dados, alguém consegue me ajudar ?

Vlw!

1 resposta

E aí Luis, tudo bem? Bom, primeiramente esse método read retorna um inteiro que é gerado por um método que possui um nonacess modifier native, ok? O que isso significa? Quando você encontrar um método dessa forma somente com sua assinatura e com essa keyword, isso significa que o método é implementado em um código nativo, em outras palavras, ele usa JNI (Java Native Interface), o que isso significa e quando você vai usar? Quando é necessário usar alguma biblioteca ou especificação que pertença a outra linguagem ou alguma funcionalidade do SO, se for bem afundo, possivelmente esse método procure algum recurso do sistema operacional, esse recurso pode ser em outras linguagens como C ou C++, ou Assembly, Fortran ou qualquer linguagem de baixo nível, por exemplo. Espero ter ajudado e bons estudos, o importante é sempre se perguntar o porquê das coisas.

Mais uma coisa, veja que ele retorna um inteiro, possivelmente alguma verificação alfanumérica que ocorra em tempo de execução, possivelmente para verificação de bits ou bytes, já que nesse momento, está ocorrendo uma leitura ou escrita de um arquivo, que é o seu caso.

Abraços.

Qualquer coisa pode me adicionar no Linkedin, gosto muito de ensinar: https://www.linkedin.com/in/antonio-de-padua-rodrigues-santos-28928a147/

Qualquer dúvida pode perguntar.