• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

[RESOLVIDO]Não me entendo

10 mensagens neste tópico

Bem nao me entendo com o apoio do reference que a Sun dispoe..

o que faz realmente isto:

Reader in ;

in =  new BuferredReader(new FileReader(args))

nao percebo o que é o Reader nem o BufferedReader nem o FileReader

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que isso lê um ficheiro, ficando o conteúdo em "in".

Quanto ao que tem lá dentro, dá uma vista no API Java onde tem a documentação de I/O que lá explica tudo direitinho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Explicacao simples: Reader é um interface implementado por BufferedReader  que te permite ler de uma determinada fonte linha a linha. FileReader diz que essa fonte é um ficheiro cuja path é: args.

Com essa linha ficas com um reader sobre o ficheiro cuja path é args. Se estas a utilizar um BufferedReader não o deves escoder por trás do interface pois assim nao tens acesso a métodos como readLine() que é bastante conveniente e uma das principais vantagens.

exemplo de como ler um ficheiro inteiro (por no ecra) com esse metodo:

BufferedReader br =  new BuferredReader(new FileReader(args));
String line;
while ((line = br.readLine()) != null){
   System.out.print(line);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não creio que a explicação esteja bem.... A classe Reader não é uma interface para um BufferedReader, ela é simplesmente uma interface que define comportamentos de leitura, e que por acaso o BufferedReader implementa.

A classe BufferedReader implementa também um buffer para que possam ser feitas leituras com mais flexibilidade.

Outro pormenor é que a classe BufferedReader é usada para streams de texto e apenas para streams de texto, por isso se o ficheiro que está a ser criado não é um ficheiro de texto a leitura não vai funcionar correctamente.

Hum... esta também não é uma boa explicação mas para explicar melhor acho que tenho de explicar o que são streams em Java... ficamos assim :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não creio que a explicação esteja bem.... A classe Reader não é uma interface para um BufferedReader, ela é simplesmente uma interface que define comportamentos de leitura, e que por acaso o BufferedReader implementa.

Já tinha corrigido mesmo antes do teu post (não tinha ficado claro, mas claro que não se utilizaria um interface para apenas uma classe). Mas na realidade estamos os dois errados, Reader é a classe abstracta mãe de BufferedReader.

BufferedReader está limitado a texto da mesma forma que o notepad está limitado a texto ou seja BufferedReader lê ficheiros binários mas tenta tranformar tudo em caractéres aparecendo estes da mesma forma que abrindo um ficheiro binário com o notepad.

Em java existem dois conceitos de streams : Streams de caractéres e Steams de bytes. Para manipular os primeiros devem-se usar subclasses de Reader e Writer e para manipular os segundos subclasses de InputStream e OutputStream.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assumi que estavas certo em relação a ser uma interface e nem fui verificar :thumbsup:

Tenho algures um pdf com uma tabela de streams e a sua utilização, se o encontrar coloco-o por aqui.

Peace.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não entendi muito bem.. esconder por trás da interface, como assim ????

é que no exemplo eles fazem Reader in;

e tu não o fizeste! Sou iniciante nisto! :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a tentar focar-te na linguagem sem perceberes os conceitos de POO...

O que acontece é que a classe Reader é superclasse de BufferedReader, logo o que vês no exemplo da sun é válido, mas ficas com uma referência para um objecto que não o BufferedReader.

O que o Dabubble fez foi apenas manter a referência para o BufferedReader, dessa forma consegue acesso a todos os métodos que são disponibilizados pela classe BufferedReader. Confuso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora