Combinação de Classes E/S: Desmistificando a Certificação SCJP6 Parte X - Parte 3

Continuaremos falando um pouco mais sobre a API java para tratamento de arquivos.

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

Artigos relacionados