Combinação de Classes E/S
O pacote java.io possui em torno de 50 classes, 15 exceções e 10 interfaces. Cada classe desse pacote tem uma finalidade bem específica. Esse é a verdadeira denotação da alta coesão.
package devmedia;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Executavel {
/**
* @param args
*/
public static void main(String[] args) {
char []array = new char[100];
try{
FileWriter fw = new FileWriter("bbbbbb.txt");
fw.write("Linguagem\nJava");
fw.flush();
fw.close();
FileReader fr = new FileReader("bbbbbb.txt");
fr.read(array);
for (char ch : array) {
System.out.println(ch);
}
fr.close();
}catch (IOException e) {
}
}
}
Um modo interessante de estudo é verificar as várias combinações possíveis.
Classe de java.io | Estende de | Argumento dos construtores | Principais métodos |
---|---|---|---|
File | Object |
File, String String,String String |
createNewFile() isDirectory() delete() renameTo() exists() isFile() list() mkdir() |
FileWriter | Writer |
File String |
flush() write() close() |
BufferedWriter | Writer | Writer |
newLine() write() close() flush() |
PrintWriter | Writer |
String File Writer OutputStream |
format() close() printf() println() print() flush() write() |
FileReader | Reader |
String File |
read() close() |
BufferedReader | Reader | Reader |
read () readLine() |
Atentemos também para o polimorfismo.
package devmedia;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
public class TesteExecutavel {
/**
* @param args
*/
public static void main(String[] args) {
try{
File f1 = new File("devmedia1.txt");
File f2 = new File(f1, "java1.txt");
File f3 = new File("dir1","java2.txt");
f1.createNewFile();
Writer fw1 = new FileWriter(f1);
Writer fw2 = new FileWriter("devmedia2.txt");
Writer bw1 = new BufferedWriter(fw1);
Writer bw2 = new BufferedWriter(fw2);
Writer bw3 = new BufferedWriter(bw1);
Writer pw1 = new PrintWriter(f1);
Writer pw2 = new PrintWriter(pw1);
Writer pw3 = new PrintWriter(bw3);
Writer pw4 = new PrintWriter("devmedia3.txt");
Reader fr1 = new FileReader(f1);
Reader fr2 = new FileReader("devmedia1.txt");
Reader br1 = new BufferedReader(fr2);
Reader br2 = new BufferedReader(br1);
}catch (IOException e) {
e.printStackTrace();
}
}
}
Anteriormente ao Java 5, PrintWriter não possuia construtores que utilizassem nem File nem String. Se estivéssemos escrevendo um código de E/S em Java 1.4, como fariamos um PrintWriter escrever em um File?
Inicialmente, nós sabemos da necessidade de criar um objeto PrintWriter em uma ponta e um File na outra.
Note a presença de FileWriter, que recebe um File como argumento de seu construtor.
PrintWriter -> FileWriter -> File
File file = new File("arquivo.txt");
FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);
pw.println("Java");
pw.println("Devmedia");
Nesse ponto será relativamente simples produzir um código para ler mais facilmente a partir de um arquivo, enviando as informações para memória.
Passando por um processo parecido ao citado anteriormente, atingimos ao seguinte código.
File file = new File("arquivo.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String data = br.readLine();
Na sequência veremos um pouco mais sobre arquivos e diretórios.
Leia todos artigos da série
- Desmistificando a Certificação SCJP6 - Parte I
- Desmistificando a Certificação SCJP6 - Parte II
- Desmistificando a Certificação SCJP6 - Parte III
- Desmistificando a Certificação SCJP6 - Parte IV - Parte 1
- Desmistificando a Certificação SCJP6 - Parte IV - Parte 2
- Desmistificando a Certificação SCJP6 - Parte V - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte V - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte V - Parte 3/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 3/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 3/3
- Operadores apropriados - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 1
- Instruções if e switch - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 2
- Iteradores e loops - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 3
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte VIII - Parte 4 - A
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte VIII - Parte 4 - B
- Tratamento de Exceções em Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 1
- Definindo Exceções em Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 2
- Assertivas Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 3
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte IX - Parte 4
- String: Desmistificando a Certificação SCJP6 - Parte X - Parte 1
- StringBuilder/StringBuffer e File: Desmistificando a Certificação SCJP6 - Parte X - Parte 2
- Utilizando Arquivos e Diretórios: Desmistificando a Certificação SCJP6 - Parte X - Parte 4
- Console e Serialização: Desmistificando a Certificação SCJP6 - Parte X - Parte 5
- Mini-teste: Desmistificando a Certificação SCJP6 - Parte X - Parte 6 A
- Mini-teste: Desmistificando a Certificação SCJP6 - Parte X - Parte 6 B
- Expressões Regulares: Desmistificando a Certificação SCJP6 Parte XI - Parte 1
- Lista Negada e Metacaracteres: Desmistificando a Certificação SCJP6 Parte XI - Parte 2
- Metacaracteres Âncora e Busca: Desmistificando a Certificação SCJP6 Parte XI - Parte 3