Mini Curso de Java – Parte 11 3


Java Logo

Olá pessoal. Esta é a última parte do nosso mini curso de Java que tem 11 partes. Ele é voltado para iniciantes, porém é recomendado que ao estudá-lo, você já tenha pelo menos algum conhecimento em lógica de programação. Se você perdeu:
a primeira parte, leia aqui; a segunda parte, leia aqui; a terceira parte, leia aqui; a quarta parte, leia aqui; a quinta parte, leia aqui; a sexta parte, leia aqui; a sétima parte, leia aqui; a oitava parte, leia aqui; a nona parte, leia aqui; a décima parte, leia aqui;

Arquivos

A classe java.io e suas funcionalidades
A classe File é a classe do Java que mermite ter acesso às informações sobre o sistema de arquivos: nome, diretório, tamanho, permissões de escrita e leitura e outroas coisas mais.

A classe File é ainda uma representação para arquivos e diretórios de sistema, trazendo informações adicionais sobre o sistema operacional, tais como qual caractere é separador de diretório, informações sobre discos disponíveis, etc.

Em Java, a classe File permite representar arquivos nesse nível de abstração. Um dos construtores desta classe recebe como argumento uma string que pode identificar, por exemplo, o nome de um arquivo em disco. Os métodos desta classe permitem obter informações sobre o arquivo — por exemplo, exists(), canRead(), canWrite(), length() e lastModified() — e realizar operações sobre o arquivo como um todo, como em delete() e deleteOnExit().

InputStream:
As principais subclasses de InputStream, já oferecidas como parte do pacote java.io, são:
java.io.ByteArrayInputStream
Valores são originários de um arranjo de bytes;

java.io.FileInputStream
Bytes são originários de um arquivo; usado em conjunto com BufferedInputStream e DataInputStream;

java.io.FilterInputStream
Oferece as definições necessárias para filtrar dados de um InputStream. Útil através de alguma de suas classes derivadas:

java.io.BufferedInputStream
Lê transparentemente grandes volumes de bytes, armazenando-os em um buffer interno, melhorando a eficiência de operação para fontes de dados lentas;

java.io.DataInputStream
Permite a leitura de representações binárias dos tipos primitivos de Java, oferecendo métodos tais como readBoolean(), readChar(), readDouble e readInt().
É uma implementação da interface DataInput.

java.io.PushbackInputStream
Oferece métodos unread() que permitem repor um ou mais bytes de volta à sua fonte, como se eles não tivessem sido lidos;

java.io.ObjectInputStream
Oferece método readObject() para a leitura de objetos que foram serializados para um ObjectOutputStream;

java.io.PipedInputStream
Oferece a funcionalidade de leitura de um pipe de bytes cuja origem está associada a um objeto PipedOutputStream;

java.io.SequenceInputStream
Oferece a funcionalidade para concatenar dois ou mais objetos InputStream; o construtor especifica os objetos que serão concatenados e, automaticamente, quando o fim do primeiro objeto é alcançado os bytes passam a ser obtidos do segundo objeto.

Isso é realizado porque não é possível transferir tudo ao mesmo tempo, entre a memória do programa e o arquivo, ou ler do arquivo para memória instantaneamente.

Arquivos binários são aqueles que usam todo o conjunto de números para representar uma informação, por exemplo, uma foto, uma planilha, um arquivo executável.

Existe ainda os arquivos contendo apenas caracteres, ou seja, letras, números e alguns caracteres especiais para representar algo na tela ou na impressora. Esses arquivos não precisam de todos os números possíveis para representar suas informações. Sendo assim, eles são um caso especial e podem ser trabalhados mais facilmente caractere a caractere, ao invés de número a número. A esses arquivos, damos o nome de arquivo-texto.

Saídas de seqüências de bytes são tratadas por OutputStream e suas classes derivadas.

OutputStream:
As principais subclasses de OutputStream o pacote java.io são:

java.io.ByteArrayOutputStream
Facilidades para escrever para um arranjo de bytes interno, que cresce de acordo com a necessidade e pode ser acessado posteriormente através do método toByteArray() ou toString();

java.io.FileOutputStream
Facilidades para escrever em arquivos, usualmente utilizadas em conjunção com as classes BufferedOutputStream e DataOutputStream;

java.io.FilterOutputStream
Definição de funcionalidades básicas para a filtragem de saída de dados, implementadas em alguma de suas classes derivadas:

java.io.BufferedOutputStream
Armazena bytes em um buffer interno até que o buffer esteja cheio ou o método flush() seja invocado;

java.io.DataOutputStream
Permite escrever valores de variáveis de tipos primitivos de Java em um formato binário portátil. É uma implementação da interface DataOutput.;

java.io.PrintStream
Oferece métodos para apresentar representações textuais dos valores de tipos primitivos Java, através de métodos print() e println();

java.io.ObjectOutputStream
Permite armazenar a representação de um objeto serializável em um OutputStream;

java.io.PipedOutputStream
Implementa a origem de um pipe de bytes, que serão lidos a partir de um objeto PipedInputStream.

Manipulação de arquivos:

Lendo um arquivo:
class StreamTest {
…public void leDados() {
……try {
………FileInputStream is = new FileInputStream(“arq.dat”);
………DataInputStream dis = new DataInputStream(is);
………System.out.println(“Dados: ” +
………dis.readInt() + “:” +
………dis.readInt() + “:” +
………dis.readDouble() + “:” +
………dis.readLong());
………dis.close();
……} catch (IOException e) {
………System.out.println(“File error: ” + e.getMessage());
……}
…}
…public static void main(String args[]) {
……StreamTest st = new StreamTest();
……st.leDados();
…}
}

Gravando em um arquivo:
import java.io.*;
class StreamTest {
…public void gravaDados() {
……try {
………FileOutputStream os = new FileOutputStream(“arq.dat”);
………DataOutputStream dos = new DataOutputStream(os);
………dos.writeInt(10);
………dos.writeInt(20);
………dos.writeDouble(3.14);
………dos.writeLong(123456789);
………dos.close();
……} catch (IOException e) {
………System.out.println(“File error: ” + e.getMessage());
……}
…}
…public static void main(String args[]) {
……StreamTest st = new StreamTest();
……st.gravaDados();
…}
}

Espero que tenham gostado e principalmente aproveitado muito este Mini Curso de Java 😉

Últimos 5 artigos de Tiago Souza

Sobre Tiago Souza

De Campinas-SP, bacharel em Ciência da Computação pela Anhanguera Educacional. Técnico em Processamento de Dados pelo Cotuca é desenvolvedor Web e trabalhou dois anos com desenvolvimento PHP e Java. Atualmente trabalha como desenvolvedor .Net (C#). Utilizando metodologia SCRUM, Também desenvolve aplicativos para Android por prazer.

Deixe uma resposta

3 pensamentos em “Mini Curso de Java – Parte 11