Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Entrada, Saída e Tipos de dados - Fluxo (stream) e o pacote Java.io

Agora que já explicamos o que são e a importância dos arquivos, nesse tutorial vamos entrar em mais detalhes sobre como usar os arquivos em nossos programas Java.

Para isso, vamos entender um pouco mais sobre os tipos de dados que vamos trabalhar, por onde entram, saem, fluxo (stream) e o pacote java.io que vai nos permitir fazer uso dos arquivos.


Tipos de dados dos arquivos em Java

Nesta altura do campeonato de nossa apostila Java Progressivo, você já deve estar careca de saber que, em níveis mais baixos, tudo em programação e computador se resume aos números binários (1's e 0's), que são formas de se representar alguns processos físicos (voltagem, corrente etc) em eletrônica.

E se tudo, à rigor é 0 e 1, o Java também vê os arquivos como números binários.
No caso específico do Java, ele trabalha com bytes.
Assim, teremos sempre a opção de se trabalhar diretamente com os números binários, em arquivos.

Porém, para os programadores humanos (alguns parecem que não são :), é algo extremamente enfadonho, para não dizer fora de cogitação, se trabalhar com uma sequência de números 0's e 1's.
Por exemplo, cada caractere, em unicode, é representado por 2 bytes em Java, ou 8 bits.

Assim, uma outra maneira de lidarmos com arquivos, que a linguagem Java nos oferece, é através de caracteres, e é dessa maneira que iremos focar em nosso curso.

Fluxo (stream) - Entrada(in) e Saída(out) de dados

Em Java, os dados de um arquivo estão organizados em série, ou seja, um atrás do outro.
Ao abrirmos um arquivo para leitura, por exemplo, começamos a leitura (acesso aos dados) a partir dos bytes iniciais, e vamos tendo acesso byte por byte.
O término desse fluxo sequencial de bytes é dado por uma espécie de sinalização, um marcador que avisa que o arquivo chegou ao final.

O uso dos arquivos em Java é bem mais comum do que imaginamos até o momento. É tanto que ele sempre criamos um aplicativo, o Java cria três objetos para se trabalhar com o fluxo de dados.
Eles são o System.in (para receber dados, in é dentro em inglês), o System.out (saída de dados, out é fora em inglês) e o System.err (para erros).

E sim, já trabalhamos como o System.in quando trabalhamos com a classe Scanner para receber dados e com System.out com as funções printf para exibir saídas de texto na tela.
Essas são as entradas e saídas padrão do Java.

Nesta seção sobre arquivos vamos usar as saídas e entradas, mas não as padrões (teclado e tela), e sim arquivos. Ou seja, vamos receber as entradas de um arquivo (e não mais pelo teclado) e vamos direcionar as saídas de nosso aplicativo para os arquivos (e não mais para a tela do computador).



O pacote java.io

No estudo e manipulação de arquivos em Java, será necessário o uso de um pacote especial, o java.io (io de in out), pois não iremos mais trabalhar com as entrada e saída padrão.
Esse package oferece um acervo gigantesco de possibilidades, classes e funções para trabalharmos com arquivos de uma maneira bem, mas bem mais simples do que em muitas outras linguagens.

Este pacote possui funções que nos permitem checar se um dado endereço (URL) é um arquivo, um diretório, se existe ou não, deletar, ver o tamanho, localização, ver quando foi criado ou modificado, e diversas outras possibilidades, como é possível ver na documentação oficial:

http://docs.oracle.com/javase/7/docs/api/java/io/package-summary.html

Em nosso curso iremos focar bastante a classe InputStream e a FileInputStream (para ler) e OutputStream e FileOutputStream (para escrever) trabalhando-se com bytes, além de classes específicas, como as classes ReaderInputStreamReaderBufferedReader para trabalharmos com chars (caracteres) e Strings.

Nenhum comentário:

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java