"Oi, amigo, mais uma vez."
"Olá para você, Rishi. Sobre o que será a lição de hoje?"
"Hoje vou falar sobre Leitor e Escritor."
"Mas, Rishi, eu já sei quase tudo sobre eles!"
"A repetição é a mãe do aprendizado."
"Hmm. Bem, tudo bem."
" Reader e Writer são análogos a InputStream e OutputStream , mas trabalham com caracteres, não bytes. Às vezes, eles também são chamados de fluxos de caracteres, em oposição a InputStream e OutputStream , que são chamados de fluxos de bytes."
"Um é para caracteres, o outro é para bytes. Eu me lembro."
"Não é só isso. Essas classes são especialmente projetadas para trabalhar com texto e strings. Hoje veremos duas implementações clássicas dessas classes abstratas: FileReader e FileWriter ."
"Aqui estão os métodos da classe FileReader :"
Método | Descrição |
---|---|
int read() |
Lê um caractere do fluxo e o retorna. |
int read(char cbuf[], int offset, int length) |
Lê uma matriz de caracteres, retorna o número de caracteres lidos. |
boolean ready() |
Retorna verdadeiro se for possível ler do fluxo. |
void close() |
Fecha o fluxo de entrada. |
int read(java.nio.CharBuffer target) |
Ler um conjunto de caracteres em um buffer. |
int read(char cbuf[]) |
Lê uma matriz de caracteres. |
long skip(long n) |
Ignora n caracteres no fluxo. |
String getEncoding() |
Retorna a codificação atual do stream. |
"Bem, eu sei quase tudo isso. Mas e o FileWriter?"
Método | Descrição |
---|---|
void write(int c) |
Grava um caractere no fluxo. |
void write(char cbuf[], int off, int len) |
Grava uma matriz de caracteres no fluxo. |
void write(char cbuf[]) |
Grava uma matriz de caracteres no fluxo. |
void write(String str, int off, int len) |
Grava parte de uma cadeia de caracteres no fluxo. |
void write(String str) |
Grava uma cadeia de caracteres no fluxo. |
void flush() |
Grava tudo armazenado em cache na memória para o disco. |
void close() |
Fecha o fluxo. |
String getEncoding() |
Retorna a codificação atual do stream. |
"Eu sei que!"
"Isso é maravilhoso. Então vamos dar uma olhada em um exemplo interessante, e mais tarde Diego lhe dará mais tarefas."
"Como você lê um arquivo linha por linha? Você pode escrever o código?"
"Fácil, olha:"
// Create a list for storing the lines
List<String> list = new ArrayList<String>();
// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
// As long as the file isn't empty, read from it
while (reader.ready())
{
list.add(reader.readLine());
}
// Close the file
reader.close();
"Hmm. Nada mal."
"Nada mal? É tudo simples e bonito. Admita, Rishi - eu já tenho um excelente domínio dos encadeamentos de E/S. Então, o que poderia ser melhorado aqui?"
"Bem, por exemplo, você poderia fazer isso:"
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Hmm. Isso é mais curto. E hoje mesmo você me contou sobre todos esses métodos. Vou retrabalhá-lo. Obrigado pela lição, Rishi."
"Boa sorte, amigo."
GO TO FULL VERSION