Jump to content

[RESOLVIDO]Não me entendo


Gurzi
 Share

Recommended Posts

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

Link to comment
Share on other 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.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other 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);
}
Link to comment
Share on other 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 👍

Link to comment
Share on other 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.

Link to comment
Share on other 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?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.