Classe Java InputStream: Entendendo Métodos Principais e Exemplo Prático
Classe Java InputStream
Este tutorial desmistifica a classe InputStream do Java, detalhando seus métodos principais, subclasses-chave e um exemplo prático usando FileInputStream.
No pacote java.io, InputStream é uma superclasse abstrata que representa um stream de entrada orientado a bytes. Embora você não possa instanciá-la diretamente, suas subclasses concretas fornecem mecanismos poderosos para ler dados de arquivos, arrays de bytes e outras fontes.
Principais Subclasses de InputStream
O uso prático de InputStream depende de suas subclasses. As mais comuns incluem:
FileInputStream– lê bytes de um arquivo no discoByteArrayInputStream– lê bytes de um array de bytes na memóriaObjectInputStream– desserializa objetos de um input stream
Exploraremos cada subclass em tutoriais dedicados, mas por agora vamos focar no FileInputStream.
Criando um InputStream
Para criar um InputStream, primeiro importe a classe:
import java.io.InputStream;
Como InputStream é abstrata, você instancia uma de suas subclasses, por exemplo:
InputStream stream = new FileInputStream("exemplo.txt");
Note que você pode substituir FileInputStream por qualquer outra subclass concreta.
Métodos Principais de InputStream
Os seguintes métodos são comuns em todas as implementações de InputStream:
int read()– lê um único byte, retornando-o comointou-1se o fim do stream for atingido.int read(byte[] b)– preenche o array de bytes fornecido com dados e retorna o número de bytes lidos.int available()– informa o número de bytes que podem ser lidos sem bloqueio.void mark(int readlimit)– marca a posição atual no stream para reset posterior.void reset()– retorna o stream à marca mais recente.boolean markSupported()– indica semarkeresetsão suportados.long skip(long n)– pula e descartanbytes de entrada.void close()– fecha o stream e libera recursos do sistema.
Exemplo Prático: Lendo um Arquivo com FileInputStream
Assumimos que temos um arquivo de texto chamado input.txt contendo:
Esta é uma linha de texto dentro do arquivo.
Abaixo está um programa Java completo que abre o arquivo, relata o número de bytes disponíveis, lê o conteúdo em um array de bytes e imprime o resultado.
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
byte[] buffer = new byte[100];
try (InputStream input = new FileInputStream("input.txt")) {
System.out.println("Bytes disponíveis: " + input.available());
int bytesLidos = input.read(buffer);
System.out.println("Bytes lidos: " + bytesLidos);
String dados = new String(buffer, 0, bytesLidos);
System.out.println("Dados lidos do arquivo:");
System.out.println(dados);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Saída
Bytes disponíveis: 39
Bytes lidos: 39
Dados lidos do arquivo:
Esta é uma linha de texto dentro do arquivo.
Este exemplo demonstra como trabalhar com FileInputStream em um bloco try-with-resources, garantindo que o stream seja fechado automaticamente mesmo se uma exceção ocorrer.
Para um mergulho mais profundo na API, consulte a documentação oficial do Java: Javadoc InputStream.
Java
- Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
- Operador instanceof em Java: Guia Completo
- Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
- Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
- Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
- Dominando Java Scanner: Guia Completo com Exemplos Práticos
- Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
- Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão